【问题标题】:The difference between 'from pylons import config' and 'import pylons.config''from pylons import config' 和 'import pylons.config' 的区别
【发布时间】:2011-12-08 12:10:48
【问题描述】:

我尝试将公司模块导入我的软件,但出现错误:

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 的方式与再次更新库和依赖项的方式相同。

如果 pyLoginmyApp 使用不同版本的 Pylons,则会出现此问题。例如,如果 pyLogin 使用 Pylons 0.9.6 并且 myApp 使用 Pylons 1.0,那么 pyLogin 代码将从 myApp 调用 但它将在错误的 Pylons 框架中运行,因此需要 from pylons import configfrom pylons.config import config,但仅适用于一。如果它对 Pylons 使用了错误的调用,那么您会发现自己收到此错误消息。

因此,解决此错误的唯一方法是找到与您的应用程序使用相同 Pylons 版本的较早或更高版本的库,或者将您的应用程序转换为与您正在使用的库相同的 Pylons 版本。

【问题讨论】:

  • config 是在pylons 中定义的类吗?如果是这样,afaik,from pylons import config 将起作用,但 import pylons.config 不会,因为您告诉 Python 导入 module pylons.config。使用前一种形式,您告诉 python 从模块 pylons 导入到 object config

标签: python import pylons configuration-files


【解决方案1】:

两种用法有区别...

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

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

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

More about import in Python

【讨论】:

    猜你喜欢
    • 2019-09-16
    • 2016-10-05
    • 1970-01-01
    • 2021-11-14
    • 2019-06-07
    • 2020-07-23
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多