PEP8 has a rule about putting imports at the top of a file:
Imports are always put at the top of the file, just after any module comments and docstrings, and before module globals and constants.
However, in certain cases, I might want to do something like:
import sys
sys.path.insert("..", 0)
import my_module
In this case, the pep8
command line utility flags my code:
E402 module level import not at top of file
What is the best way to achieve PEP8 compliance with sys.path
modifications?
I have this code because I'm following the project structure given in The Hitchhiker's Guide to Python.
That guide suggests that I have a my_module
folder, separate from a tests
folder, both of which are in the same directory. If I want to access my_module
from tests
, I think I need to add ..
to the sys.path
If there are just a few imports, you can just ignore PEP8 on those import
lines:
import sys
sys.path.insert("..", 0)
import my_module # noqa: E402