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

2024-05-18 23:42:26 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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文件有关,因此重新安装就成功了(如下所示)。接受奥斯汀·马歇尔的回答,因为这是解决这个问题的一个可行方案。

pip uninstall my_repo
python setup.py develop --user

Tags: pathfrompyimportfooinitmysys
2条回答

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

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

Import sys, os

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时,最后一行没有输出或错误

相关问题 更多 >

    热门问题