Python" ImportError:没有名为..."的模块,但模块存在

时间:2015-09-18 05:18:18

标签: 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中。

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

pip uninstall my_repo
python setup.py develop --user

2 个答案:

答案 0 :(得分:2)

experiments不在PYTHONPATH中,也不是已安装使用标准的setuptools技术。我能够复制您的问题,这可以通过将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

答案 1 :(得分:-2)

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

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

Import sys, os