Python 在目录中导入
Python imports within a directory
我有一个结构如下的项目:
.
|-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
中的代码依赖于 subsubdir1
、subsubdir2
和 subsubdir3
中其他 python 文件中的代码。当我更改导入这两个文件的位置时,必须更改这些子目录中所有 python 文件中的导入语句。
如果我运行main.py
或sub_main2.py
导入other_relevant.py
,则需要在other_relevant.py
中导入才能使用from dir.subdir1.subsubdir1.file import ...
。
如果我正在 运行 宁 sub_main.py
脚本然后导入语句变成 from subdir.subsubdir1.file import ...
如果我 运行 sub_sub_main.py
然后导入语句变成 from subsubdir1.file import ...
.
由于文件结构在组织文件方面很有意义,所以我不想真正改变它。有没有一种方法可以管理导入语句,这样我就不必根据 运行 sub_sub_main.py
和 other_relevant.py
的位置更改 subdir
中文件中的所有导入语句]?
将环境变量 PYTHONPATH
设置为您的顶级文件夹路径。然后,无论您在哪里执行 python 脚本,所有导入语句都将相对于此文件夹进行。
例如从 sub_main2.py
你可以这样做:
from dir.subdir.subdir3 import *
设置 env 变量可以通过获取位于文件夹路径的 sourceme.sh 文件来完成。如果只使用一个项目,或者直接在 .bashrc 中。
样本sourceme.sh:
export PYTHONPATH=`pwd -P`
我有一个结构如下的项目:
.
|-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
中的代码依赖于 subsubdir1
、subsubdir2
和 subsubdir3
中其他 python 文件中的代码。当我更改导入这两个文件的位置时,必须更改这些子目录中所有 python 文件中的导入语句。
如果我运行main.py
或sub_main2.py
导入other_relevant.py
,则需要在other_relevant.py
中导入才能使用from dir.subdir1.subsubdir1.file import ...
。
如果我正在 运行 宁 sub_main.py
脚本然后导入语句变成 from subdir.subsubdir1.file import ...
如果我 运行 sub_sub_main.py
然后导入语句变成 from subsubdir1.file import ...
.
由于文件结构在组织文件方面很有意义,所以我不想真正改变它。有没有一种方法可以管理导入语句,这样我就不必根据 运行 sub_sub_main.py
和 other_relevant.py
的位置更改 subdir
中文件中的所有导入语句]?
将环境变量 PYTHONPATH
设置为您的顶级文件夹路径。然后,无论您在哪里执行 python 脚本,所有导入语句都将相对于此文件夹进行。
例如从 sub_main2.py
你可以这样做:
from dir.subdir.subdir3 import *
设置 env 变量可以通过获取位于文件夹路径的 sourceme.sh 文件来完成。如果只使用一个项目,或者直接在 .bashrc 中。
样本sourceme.sh:
export PYTHONPATH=`pwd -P`