Python "ImportError: No module named...",但模块存在

标签 python path importerror

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

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/

相关文章:

Python While 循环 - 在 for 循环中嵌套 if 语句以检查数组中的数字

python - 作为导入模块说明符的字符串变量

Python3.5 ImportError : libpython3. 5m.so.1.0: 无法打开共享对象文件: No such file or directory

c - 可能的路径 [Hackerrank] 编译超时

macos - .bash_profile 中 `$PATH` 导出的末尾或开头的 `PATH`(对于 Mac 上的 Git)

reactjs - Create-React-App 编译失败 |导入/第一次错误

python - 使用 numpy loadtxt 函数从文本文件中读取值

python - Numba 减慢代码?

python - 为什么 pylint 为 numpy.ndarray.shape 返回 `unsubscriptable-object`?

mercurial - 是否有在 mercurial 中设置默认路径的命令?