Add path to sys.path vs. PEP E402

不问归期 提交于 2019-12-07 16:19:54

问题


In order to import a project specific module somewhere located on your disk, one can easily append this directory to sys.path:

import sys
sys.path.append(some_module_path)

import some_module

However, the latter import now violates PEP E402 ("module level import not at top of file"). At least spyder tells me so. Is spyder here too picky?

In spyder there is the principal idea of a "project", where I assumed environments can be adjusted specific for this project. However, I have no clue, how to modify e.g. the sys.path depending on a spyder project.

How can I modify sys.path in a spyder project? Or is there a general python way of solving this issue?


回答1:


You could put the sys.path extension in a separate module, e.g. _paths.py.

Contents of _paths.py:

import sys

sys.path.append(some_module_path)
sys.path.append(some_other_module_path)
# ...and so on...

And then in your main application:

import sys

import _paths
import some_module

some_module.some_func()

This solution puts your "project configuration" nicely in a single place (which makes it easy to maintain in the future), and complies with at least PEP8 (including E402) and pylint rules.




回答2:


I know this doesn't answer the question, but it may be helpful information.

You can import that module by directly specifying its path, without using sys.path.append

In Python 3 this is as simple as

import imp
some_module = imp.load_source('some_module', '/path/to/some_module.py')

More information here: How to import a module given the full path?



来源:https://stackoverflow.com/questions/56184551/add-path-to-sys-path-vs-pep-e402

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!