添加到 sys.path 与 PEP E402 的路径

Sos*_*sel 5 python pep8 spyder

为了导入位于磁盘上某处的项目特定模块,可以轻松地将此目录附加到 sys.path:

import sys
sys.path.append(some_module_path)

import some_module
Run Code Online (Sandbox Code Playgroud)

但是,后者的导入现在违反了 PEP E402(“模块级导入不在文件顶部”)。至少 spyder 是这样告诉我的。这里的spyder是不是太挑剔了?

在 spyder 中有一个“项目”的主要思想,我假设可以针对这个项目调整环境。但是,我不知道如何根据 spyder 项目修改例如 sys.path。

如何在 spyder 项目中修改 sys.path?或者是否有解决此问题的通用python方法?

wov*_*ano 6

您可以将sys.path扩展放在一个单独的模块中,例如_paths.py.

内容_paths.py

import sys

sys.path.append(some_module_path)
sys.path.append(some_other_module_path)
# ...and so on...
Run Code Online (Sandbox Code Playgroud)

然后在您的主应用程序中:

import sys

import _paths
import some_module

some_module.some_func()
Run Code Online (Sandbox Code Playgroud)

该解决方案将您的“项目配置”很好地放在一个地方(这使得将来易于维护),并且至少符合 PEP8(包括 E402)和 pylint 规则。

  • 很好的解决方法,但它添加了 PyFlakes 警告“已导入但未使用” (2认同)
  • @tricky 在这种情况下,是时候“# noqa: W0611”了。 (2认同)