我不是Python的新手,但我遇到了一个奇怪的问题。
我设置了这个python项目结构(摘录):
其中 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:没有名为'core'的模块
不改变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路径,无论它在哪里被调用。
感谢您的帮助
答案 0 :(得分:1)
在解释器中设置PYTHONPATH
无法提供帮助,因为它可以帮助您解决问题。 s阅读翻译启动。
解决方案是在导入之前将核心模块的路径直接附加到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