'from pylons import config'和'import pylons.config'之间的区别

时间:2011-12-08 12:10:48

标签: python import pylons configuration-files

我试图将公司模块导入我的软件,我收到错误:

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版本。

1 个答案:

答案 0 :(得分:4)

两种用法之间存在差异......

import将Python模块加载到自己的命名空间,而from将Python模块加载到当前命名空间

因此,使用from pylons import config将config配置为当前命名空间。但是尝试使用class导入 function import 是不可能的,因为没有名称空间来保留它们......您只能导入模块,并使用functionsclasses通过使用自己的命名空间调用它们,例如

import pylons
....
pylons.config #to retreive config

More about import in Python