2014-07-07 160 views
0

我在学习使用模块来清理我的代码。我遇到了范围问题。我明白,当你导入一个模块时,Python给这个模块一个单独的范围。我相信这个答案是在某处的文档中,但我似乎无法找到它。导入需要其他包的模块

我创建模块info.py,其包括功能getStuff

def getStuff(key): 
    db_info = 'db_location' + 'db_credentials' 
    db = create_engine('postgresql://' + db_info) 
    connection = db.connect() 
    data = do_sql_stuff(SELECT things FROM stuff) 
    return(data) 

然后在Python解释,I输入

>>>> import sqlalchemy 
>>>> import info 
>>>> data = getStuff(key) 

和得到的错误消息

NameError: name 'create_engine' is not defined 

这告诉我info.py没有接受ss到SQLAlchemy。如果我在解释器中定义getStuff,它会正确运行。

如何设置模块以便访问其他软件包?

回答

0

正如我所料,这个问题有一个非常简单的解决方案。所有需要做的就是将import语句放在info.py文件的顶部。