Python安装在本地目录。

我的目录树是这样的:

(local directory)/site-packages/toolkit/interface.py

我的代码在这里:

(local directory)/site-packages/toolkit/examples/mountain.py

为了运行这个例子,我编写了python mountain.py,在代码中我有:

from toolkit.interface import interface

我得到了一个错误:

Traceback (most recent call last):
  File "mountain.py", line 28, in ?
    from toolkit.interface import interface
ImportError: No module named toolkit.interface

我已经检查过系统了。这里有目录/site-packages。此外,我在工具包文件夹中有__init__.py.bin文件,以向Python表明这是一个包。我在examples目录中也有一个__init__.py.bin。

我不知道为什么Python无法在sys.path中找到该文件。什么好主意吗?会是权限问题吗?我需要一些执行许可吗?


当前回答

如果您尝试了上面提供的所有方法,但都失败了,可能您的模块与内置模块具有相同的名称。或者,在sys. exe中具有高优先级的文件夹中存在同名的模块。路径比模块的路径更重要。

要调试,输入你的from foo。import baz complaint ImportError:没有名为bar的模块。更改为import foo;打印foo,这将显示foo的路径。这是你所期望的吗?

如果不是,要么重命名foo,要么使用绝对导入。

其他回答

Linux:导入的模块位于/usr/local/lib/python2.7/dist-packages中

如果你使用的是C语言编译的模块,不要忘记在sudo setup.py install后chmod .so文件。

sudo chmod 755 /usr/local/lib/python2.7/dist-packages/*.so

在我的例子中,问题是我链接到调试python和boost:: python,这要求扩展名是愚息_d。pyd,不仅仅是愚愚。pyd;重命名文件或更新CMakeLists.txt属性修复了错误。

在我的例子中,我包含了打包路径。鸡蛋文件夹,而不是下面的实际包裹。我复制包到顶级,它工作。

致所有还有这个问题的人。我相信Pycharm与import混淆了。对我来说,当我写“从命名空间导入一些东西”时,前一行会用红色划线,表明有错误,但有效。然而,“from .namespace import something”没有下划线,但也不起作用。

Try

try:
    from namespace import something 
except NameError:
    from .namespace import something

你正在阅读这个答案说你的__init__.py是在正确的地方,你已经安装了所有的依赖项,你仍然得到ImportError。

我也遇到了类似的问题,除了我的程序在使用PyCharm运行时运行良好,但当我从终端运行时出现上述错误。在深入研究之后,我发现PYTHONPATH没有项目目录的条目。所以,我设置PYTHONPATH每个Import语句在PyCharm上工作,但不是从终端:

export PYTHONPATH=$PYTHONPATH:`pwd`  (OR your project root directory)

还有另一种方法可以使用sys。路径为:

import sys
sys.path.insert(0,'<project directory>') OR
sys.path.append('<project directory>')

您可以根据希望搜索项目的顺序使用插入/追加。