from pylons import config'与'import pylons.config'的区别
我正在尝试把一个公司的模块导入到我的软件中,但遇到了错误:
ImportError: No module named config
来自:
from pylons.config import config
显然,我导入的这个模块需要用到pylons.config,但在我的虚拟环境中找不到它。
如果我打开终端,尝试一些Python脚本,我可以找到配置文件,如果我这样做:
from pylons import config
但如果我这样做就会出错:
import pylons.config
这是为什么呢?
有没有人知道我该如何或者在哪里可以找到:
from pylons.config import config
让它正常工作。请记住,我不能修改这个模块的代码,只能修改我自己的代码或者我的系统文件。
更新
如果有其他人遇到类似的问题,可能是因为你正在运行两个不同版本的Pylons模块。
举个例子,你正在创建一个叫myApp的登录应用。你有一些帮助处理登录的Python模块,叫pyLogin。
首先,你用python setup.py install安装pyLogin。这会把库添加到你的站点包中,并更新它依赖的库,比如SqlAlchemy。
接下来,你用同样的方法安装myApp,这又会更新库和依赖。
如果pyLogin和myApp使用的Pylons版本不同,就会出现这个问题。例如,如果pyLogin使用的是Pylons 0.9.6,而myApp使用的是Pylons 1.0,那么pyLogin的代码会从myApp中调用,但它会在错误的Pylons框架中运行,因此会需要from pylons import config或者from pylons.config import config,但只能用其中一个。如果使用了错误的Pylons调用,就会出现这个错误信息。
所以解决这个错误的唯一方法就是找到与应用程序使用相同Pylons版本的早期或晚期库,或者把你的应用程序转换为与所用库相同的Pylons版本。
1 个回答
这两种用法是有区别的...
import
是把一个 Python 模块加载到它自己的命名空间中,而 from
则是把一个 Python 模块加载到当前的命名空间中。
比如,使用 from pylons import config
就是把 config 导入到你当前的命名空间里。但是,如果你想用 import
导入一个类
或函数
,那就不行,因为没有地方来存放它们... 你只能导入模块,然后通过它们自己的命名空间来调用 函数
或 类
,就像这样:
import pylons
....
pylons.config #to retreive config