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


当前回答

所有python文件的文件编码必须为utf-8。

请看这里:https://github.com/jupyter/notebook/issues/3166#issuecomment-581332097

其他回答

一个简单的解决方案是使用python -m PIP install <library-name>来安装模块,而不是PIP install <library-name> 在管理限制的情况下,您可以使用sudo

根据你对orip帖子的评论,我猜事情是这样的:

You edited __init__.py on windows. The windows editor added something non-printing, perhaps a carriage-return (end-of-line in Windows is CR/LF; in unix it is LF only), or perhaps a CTRL-Z (windows end-of-file). You used WinSCP to copy the file to your unix box. WinSCP thought: "This has something that's not basic text; I'll put a .bin extension to indicate binary data." The missing __init__.py (now called __init__.py.bin) means python doesn't understand toolkit as a package. You create __init__.py in the appropriate directory and everything works... ?

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

对我来说,将该文件作为模块运行很有帮助。

而不是

python myapp/app.py

使用

python -m myapp.app

这并不完全相同,但在某些情况下这可能是一种更好的方法。

我也犯了同样的错误。这是由于有人在与我的脚本相同的文件夹中创建了一个文件夹,该文件夹的名称与我从其他地方导入的模块冲突。它没有导入外部模块,而是在这个显然不包含预期模块的文件夹中查找。