为了将项目特定的模块导入磁盘上的某个位置,可以轻松地将此目录附加到sys.path:
import sys
sys.path.append(some_module_path)
import some_module
但是,后者的导入现在违反了PEP E402(“模块级别的导入不在文件顶部”)。至少spyder告诉我。间谍在这里太挑剔了吗?
在spyder中,有一个“项目”的基本概念,我假设可以针对该项目调整环境。但是,我不知道如何修改例如sys.path取决于spyder项目。
如何在spyder项目中修改sys.path?还是有解决该问题的通用python方法?
答案 0 :(得分:2)
您可以将sys.path
扩展名放在单独的模块中,例如_paths.py
。
_paths.py
的内容:
import sys
sys.path.append(some_module_path)
sys.path.append(some_other_module_path)
# ...and so on...
然后在您的主应用程序中:
import sys
import _paths
import some_module
some_module.some_func()
此解决方案可将您的“项目配置”很好地放在一个地方(这使得将来易于维护),并且至少符合PEP8(包括E402)和pylint规则。
答案 1 :(得分:1)
作为answer的替代解决方案,带有单独的模块(如果发现这对我来说是可行的解决方案)。
try:
sys.path.append(Path(__file__).parent.parent)
except IndexError:
pass
如果我只使用sys.path.append(...)
,则会收到警告,但使用try-catch块不会产生警告。
答案 2 :(得分:0)
我知道这不能回答问题,但这可能是有用的信息。
您可以通过直接指定模块的路径来导入该模块,而无需使用<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/latest/css/bootstrap.min.css">
在Python 3中,这很简单
sys.path.append