0

我一直在寻找具有继承支持的ini解析,例如Zend_Config_Ini,所以我找到了pyconfigini(https://bitbucket.org/maascamp/pyconfigini)

我有以下项目结构:

  • 应用程序
    • __ 初始化 __.py
    • 设置.py
    • __ 初始化 __.py
    • pyconfigini.py

我将 pyconfigini.py 模块源代码(https://bitbucket.org/maascamp/pyconfigini)复制到 lib/pyconfigini.py 并在我的设置模块(app/setting.py)中编码:

import os
from lib.pyconfigini import parse_ini
PROJECT_DIR = os.path.join( os.path.dirname(__file__), '../');
APP_ENV = os.getenv('APP_ENV','development')
config = parse_ini(os.path.abspath(os.path.join(PROJECT_DIR,"config.ini")), APP_ENV)
print config.nome

但是,当我在命令行中运行它时,出现此错误

> python settings.py
Traceback (most recent call last):
  File "settings.py", line 7, in <module>
    from lib.pyconfigini import parse_ini
ImportError: No module named lib.pyconfigini

为什么我收到此错误?我该如何解决?

4

1 回答 1

2

问题是你正在运行

python setting.py

app/目录(在脚本开始时变为current working directory)。Python 在PYTHONPATH环境变量中列出的目录中查找模块(您可以通过sys.path变量从 Python 代码访问它)。

此目录列表包含标准site-packagesdist-packages等目录和您current working directory- 一个目录,您尝试从该目录运行您的脚本。

从上面的信息可以看出,libpackage 找不到,因为它不存在于sys.path.

因此,我建议您将入口点脚本位置更改为根目录,app以及lib包所在的位置。

但是,如果您settings.py出于某种原因不想直接运行它来测试模块,您可以手动定义您的 PYTHONPATH,运行您的脚本,例如:

PYTHONPATH="../lib" python ./settings.py

这将使用所需的lib目录修补您的 PYTHONPATH。

运行应用程序的另一种方法是将lib包放在app/目录中。

于 2012-08-13T15:05:31.060 回答