我正在尝试学习使用模块来清理我的代码。我遇到了范围问题。我了解到,当您导入模块时,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解释器中输入
>>>> import sqlalchemy
>>>> import info
>>>> data = getStuff(key)
并收到错误消息
NameError: name 'create_engine' is not defined
这告诉我info.py
无法访问SQLAlchemy。如果我在解释器中定义getStuff
,它会正确运行。
如何设置模块以便可以访问其他软件包?
答案 0 :(得分:0)
正如我所料,这个问题有一个非常简单的解决方案。所有需要做的就是将import
语句放在info.py
文件的顶部。