我的文件目录树是这样的:
my_repo
├── experiments
│ ├── foo.py
│ └── __init__.py
└── tests
├── baz.py
└── __init__.py
在 baz.py
中,我尝试
from experiments.foo import FooExperiment
但是我明白了
*** ImportError: No module named experiments.foo
当我从终端 (Mac OSX 10.9) 打开 python 并运行时
from experiments.foo import FooExperiment
该类已正确导入。到底是怎么回事?请帮忙。
在这两种情况下,sys.path
完全相同,除非我在 baz.py
当前路径(到 baz.py
) 包括在内。是的,/path/to/my_repo
也在我的 sys.path
中。
编辑:我的问题是 egg 文件冲突,所以重新安装就成功了(见下文)。接受@Austin Marshall 的回答,因为它是解决此问题一般情况的可行解决方案。
pip uninstall my_repo
python setup.py develop --user
最佳答案
experiments
不在 PYTHONPATH
中,也未使用标准设置工具技术安装。我能够重现您的问题,将 my_repo
放入 PYTHONPATH
即可解决:
Austins-MacBook-Pro-2:my_repo amarshall$ tree .
.
├── experiments
│ ├── __init__.py
│ └── foo.py
└── tests
├── __init__.py
└── baz.py
2 directories, 4 files
Austins-MacBook-Pro-2:my_repo amarshall$ PATH=$PATH:`pwd`/experiments python tests/baz.py
Traceback (most recent call last):
File "tests/baz.py", line 1, in <module>
from experiments.foo import FooExperiment
ImportError: No module named experiments.foo
Austins-MacBook-Pro-2:my_repo amarshall$ PYTHONPATH=$PYTHONPATH:`pwd` python tests/baz.py
当指定 PYTHONPATH
而不是 PATH
时,最后一行没有输出或错误
关于Python "ImportError: No module named...",但模块存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32644387/