谁能解释为什么python找不到这些模块?

时间:2015-03-15 16:51:15

标签: python python-2.7

我试图在Python 2.7中获得模块/包的挂起。我在/ Users / me / dir

中有一个名为tmp.py的文件
import mypackage.datamanagement.lib.models
from mypackage.datamanagement.lib.models import Order

我可以像这样运行它

$pwd   #/Users/me/dir
$python tmp.py  #runs fine

一切正常。

但是,如果我将tmp.py复制到包中的其他位置......

$cp tmp.py mypackage/datamanagement/scrips/ 

然后尝试使用来自/ Users / me / dir的$python mypackage/datamanagement/scripts/tmp.py来运行它...

File "mypackage/datamanagement/scrips/tmp.py", line 1, in <module>
import mypackage.datamanagement.lib.models
ImportError: No module named mypackage.datamanagement.lib.models 

我在所有相关目录中都有 init .py。我认为这与pythonpath有关。我是osx,如果我跑

echo $PYTHONPATH

我得到一个空白。

有人可以解释发生了什么吗? python工作目录是否由python文件的位置设置?而不是python执行的位置?

1 个答案:

答案 0 :(得分:0)

如果您尝试使用本地Python模块,在您的情况下,&#34; lib&#34;将是你的&#34; tmp.py&#34;的目录。模块:

import os, sys
lib_path = os.path.abspath(os.path.join('..', '..', '..', 'lib'))
sys.path.append(lib_path)

import mymodule

来源:https://stackoverflow.com/a/4284378/950427