我有一个结构如下的项目:
.
|-dir
| |-subdir
| | |-subsubdir1
| | |-subsubdir2
| | |-subsubdir3
| | |-sub_sub_main.py
| | |-other_relevant.py
| |-sub_main1.py
|-dir2
| |-sub_main2.py
|-main.py
有时候,我需要从导入功能other_relevant.py
在main.py
,sub_main1.py
,sub_main2.py
,和sub_sub_main.py
。但是,从目录树的不同级别导入脚本会导致必要的导入结构发生更改。
中的代码other_relevant.py
和sub_sub_main.py
依赖代码在其他Python文件中subsubdir1
,subsubdir2
和subsubdir3
。当我更改导入这两个文件的位置时,必须更改这些子目录中所有python文件中的import语句。
如果我运行main.py
或sub_main2.py
其中进口other_relevant.py
,它需要进口other_relevant.py
来使用from dir.subdir1.subsubdir1.file import ...
。
如果我正在运行sub_main.py
脚本,则import语句将变为from subdir.subsubdir1.file import ...
如果我运行,sub_sub_main.py
则import语句变为from subsubdir1.file import ...
。
由于文件结构在组织文件方面很有意义,所以我不想真正改变它。有没有一种方法可以管理导入语句,这样我就不必subdir
根据运行位置sub_sub_main.py
和位置更改文件中的所有导入语句了other_relevant.py
?
将env变量设置PYTHONPATH
为您的顶级文件夹路径。然后,无论您在哪里执行python脚本,所有的import语句都会相对于该文件夹进行。例如,sub_main2.py
您可以执行以下操作:
from dir.subdir.subdir3 import *
可以通过获取位于文件夹路径中的sourceme.sh文件来设置env变量。如果仅使用一个项目,则直接在.bashrc中。
样本sourceme.sh:
export PYTHONPATH=`pwd -P`
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句