0

我不是 Python 的新手,但我遇到了一个奇怪的问题。

我设置了这个python项目结构(摘录):

  • 项目-A/myapp
  • 项目-B/core/common/lib

其中myapp/core、common 和 lib是 python 包。

project-B 目录在 python 路径中设置为 '/root_path/to/core_module'

当我运行将模块导入 project-A/myapp 目录的脚本时:

from core.common.lib import Error, XmlSource, Property, Preference

它引发了一个错误:

ImportError:没有名为“核心”的模块

无需更改 python3 解释器中的当前目录并输入相同的命令:

jeby6372@mercure:~/factory/bubble$ python3
Python 3.4.0 (default, Apr  9 2014, 20:03:10) 
[GCC 4.7.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from core.common.lib import Error, XmlSource, Property, Preference
>>> 

模块已加载...在脚本执行期间,我期待与上述相同的行为。

所以我尝试在失败的导入语句之前添加这个命令

os.environ['PYTHONPATH'] = '/root_path/to/core_module'

没有成功...

任何想法 ?

也许我错了,但我假设python3解释器首先在当前目录中搜索相对导入模块路径,然后在定义的python路径中搜索它被调用的位置。

谢谢你的帮助

4

1 回答 1

1

设置PYTHONPATH解释器内部没有帮助,因为它是在解释器启动时读取的。解决方案是在导入之前直接将核心模块的路径附加到sys.path它,即

import sys
sys.path.append('/path/to/core/module')
import core.module

我猜你忘了导出pythonpath,试试(在shell中):

export PYTHONPATH='/path/to/core/module'
python your_python_script.py
于 2014-05-04T10:57:45.223 回答