我试图将公司模块导入我的软件,我收到错误:
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框架中运行,因此需要从pylons导入配置 或从pylons.config导入配置 ,但只能使用一。如果它使用错误的Pylons调用,那么你会发现自己有这个错误信息。
因此,此错误的唯一解决方案是找到使用与您的应用程序相同的Pylons版本的早期或更晚的库,或者将您的应用程序转换为与您正在使用的库相同的Pylons版本。
答案 0 :(得分:4)
两种用法之间存在差异......
import
将Python模块加载到自己的命名空间,而from
将Python模块加载到当前命名空间。
因此,使用from pylons import config
将config配置为当前命名空间。但是尝试使用class
导入 function
或 import
是不可能的,因为没有名称空间来保留它们......您只能导入模块,并使用functions
或classes
通过使用自己的命名空间调用它们,例如
import pylons
....
pylons.config #to retreive config