我在Windows上的Wing IDE内部运行PyLint。我有一个子目录(包)在我的项目和包内,我从顶层导入一个模块,即。

__init__.py
myapp.py
one.py
subdir\
    __init__.py
    two.py

在two.py中,我导入了一个,这在运行时工作得很好,因为顶层目录(myapp.py从其中运行)在Python路径中。然而,当我在two.py上运行PyLint时,它会给我一个错误:

F0401: Unable to import 'one'

我怎么解决这个问题?


当前回答

这是一个老问题,但没有公认的答案,所以我建议这样做:将import语句更改为two.py:

from .. import one

在我当前的环境中(Python 3.6, VSCode使用pylint 2.3.1),这将清除标记语句。

其他回答

我刚刚发现的一个解决办法是,实际上只对整个包运行PyLint,而不是对单个文件运行PyLint。以某种方式,它设法找到导入的模块。

也许通过手动在PYTHONPATH中追加目录?

sys.path.append(dirname)

你好,我能够从不同的目录导入包。我只是做了以下事情: 注意:我正在使用VScode

创建Python包的步骤 使用Python包非常简单。你所需要做的就是:

创建一个目录,并给它您的包的名称。 把你的课程放在里面。 在该目录中创建__init__.py文件

例如:你有一个名为Framework的文件夹,你在那里保存了所有的自定义类,你的工作就是在名为Framework的文件夹中创建一个__init__.py文件。

在导入时,你需要以这种方式导入——>

from Framework import base

因此E0401错误消失 Framework是你刚刚创建__init__.py和 Base是您需要导入并处理的自定义模块 希望能有所帮助!!!!

我必须更新系统PYTHONPATH变量来添加我的应用程序引擎路径。在我的例子中,我只需要编辑我的~/。Bashrc文件,并添加以下行:

出口到PYTHONPATH = $ PYTHONPATH: /道路/ / google_appengine_folder

事实上,我尝试先设置init-hook,但这并没有在我的代码库中始终解决这个问题(不确定为什么)。一旦我将它添加到系统路径(一般来说可能是一个好主意),我的问题就消失了。

编辑~ /。Pylintrc来包含你的模块上面的目录,像这样:

[MASTER]
init-hook='import sys,os;[sys.path.append("your_workspace_path"+di) for di in os.listdir("your_workspace_path")]'