Python "ImportError: No module named...", but the module exists

Python "ImportError: No module named...", but the module exists

我的文件目录树是这样的:

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

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

from experiments.foo import FooExperiment

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

在这两种情况下,sys.path 完全相同,除了当我在 baz.py 中时,包括当前路径(到 baz.py)。是的 /path/to/my_repo 也在我的 sys.path 中。

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

pip uninstall my_repo
python setup.py develop --user

我通常使用以下内容将路径附加到 sys.path:

sys.path.append(os.path.join(os.path.dirname(__file__), "../myfolder"))

Import sys, os

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

时,最后一行没有输出或错误