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中找到该文件。什么好主意吗?会是权限问题吗?我需要一些执行许可吗?


当前回答

对我来说,这是件非常愚蠢的事。我使用pip3 install安装了这个库,但是我运行的程序是python program.py,而不是python3 program.py。

其他回答

要将一个目录标记为包,你需要一个名为__init__.py的文件,这有帮助吗?

是的。您需要该目录包含__init__.py文件,该文件是初始化包的文件。来,看看这个。

需要__init__.py文件才能使Python将目录视为包含包;这样做是为了防止具有通用名称的目录(如string)在无意中隐藏之后在模块搜索路径上出现的有效模块。在最简单的情况下,__init__.py可以只是一个空文件,但它也可以执行包的初始化代码或设置__all__变量,稍后将介绍。

在遭受同样的问题后,我发现我的解决方案是从我的项目中删除所有pyc文件,似乎这些缓存文件以某种方式导致了这个错误。

我发现做到这一点最简单的方法是在Windows资源管理器中导航到我的项目文件夹并搜索*。然后选择所有(Ctrl+A)并删除它们(Ctrl+X)。

我可以通过删除特定的pyc文件来解决我的问题,但我从未尝试过这样做

使用sys.path.append对我有用,就像在回答中提到的那样。起初,我认为它不能工作,直到我意识到在目录路径之前有一个空格。所以要确保路径前没有错别字或空格

在linux服务器上尝试dos2unix script_name

(使用find命令删除所有pyc文件(如果有的话)。- name”*。佩克”删除)

如果你在Windows上使用脚本,重新运行