使用__init__.py修改sys路径是一个好主意吗?

Sol*_*lar 5 python python-import pythonpath

我想问你一些我想做的事情。

我有以下结构:

src
    - __init__.py
    - class1.py
    + folder2
        - __init__.py
        - class2.py
Run Code Online (Sandbox Code Playgroud)

我class2.py我想导入class1以使用它。显然,我不能使用

from src.class1 import Class1
Run Code Online (Sandbox Code Playgroud)

因为它会产生一个错误。对我有用的解决方法是在__init__.py内部定义以下内容folder2

import sys
sys.path.append('src')
Run Code Online (Sandbox Code Playgroud)

我的问题是,此选项是否有效并且可以使用,还是有更好的解决方案。

另一个问题。假设项目结构为:

src
    - __init__.py
    - class1.py
    + folder2
        - __init__.py
        - class2.py
    + errorsFolder
        - __init__.py
        - errors.py
Run Code Online (Sandbox Code Playgroud)

class1

from errorsFolder.errors import Errors
Run Code Online (Sandbox Code Playgroud)

这很好。但是,如果我尝试class2在与以下级别相同的级别上进行操作errorsFolder

from src.errorsFolder.errors import Errors
Run Code Online (Sandbox Code Playgroud)

失败(ImportError: No module named src.errorsFolder.errors

先感谢您!

Joh*_*nck 3

解决此问题的一种正确方法是将环境变量设置PYTHONPATH为包含src. 然后import src.class1将始终有效,无论您从哪个目录开始。