Python“ImportError:没有名为...的模块”,但该模块存在

Bol*_*ain 5 python path importerror

我的文件目录树如下所示:

\n\n
my_repo\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 experiments\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 foo.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tests\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 baz.py\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 __init__.py\n
Run Code Online (Sandbox Code Playgroud)\n\n

在里面baz.py,我尝试

\n\n
from experiments.foo import FooExperiment\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我得到

\n\n
*** ImportError: No module named experiments.foo\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我从终端 (Mac OSX 10.9) 打开 python 并运行

\n\n
from experiments.foo import FooExperiment\n
Run Code Online (Sandbox Code Playgroud)\n\n

该类已正确导入。到底是怎么回事?请帮忙。

\n\n

在这两种情况下,情况sys.path完全相同,除非我位于baz.py当前路径 (to baz.py) 中。是的,/path/to/my_repo在我的sys.path也是如此。

\n\n

编辑:我的问题是鸡蛋文件冲突,所以重新安装就可以了(如下)。接受@Austin Marshall 的答案,因为它是解决这个问题的一般情况的可行解决方案。

\n\n
pip uninstall my_repo\npython setup.py develop --user\n
Run Code Online (Sandbox Code Playgroud)\n

Aus*_*all 2

experiments不在 中PYTHONPATH,也不是使用标准 setuptools 技术安装的。我可以复制您的问题,通过输入以下内容可以解决该my_repo问题PYTHONPATH

\n\n
Austins-MacBook-Pro-2:my_repo amarshall$ tree .\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 experiments\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 foo.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tests\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 baz.py\n\n2 directories, 4 files\nAustins-MacBook-Pro-2:my_repo amarshall$ PATH=$PATH:`pwd`/experiments python tests/baz.py \nTraceback (most recent call last):\n  File "tests/baz.py", line 1, in <module>\n    from experiments.foo import FooExperiment\nImportError: No module named experiments.foo\nAustins-MacBook-Pro-2:my_repo amarshall$ PYTHONPATH=$PYTHONPATH:`pwd` python tests/baz.py \n
Run Code Online (Sandbox Code Playgroud)\n\n

PYTHONPATH当指定时没有输出,或者最后一行有错误,而不是PATH

\n