【问题标题】:Python imports within a directory目录中的 Python 导入
【发布时间】:2021-01-09 07:17:44
【问题描述】:

我有一个这样构成的项目:

.
  |-dir
  |  |-subdir
  |  |  |-subsubdir1
  |  |  |-subsubdir2
  |  |  |-subsubdir3
  |  |  |-sub_sub_main.py
  |  |  |-other_relevant.py
  |  |-sub_main1.py
  |-dir2
  |  |-sub_main2.py
  |-main.py

有时我需要在main.pysub_main1.pysub_main2.pysub_sub_main.py 中导入来自other_relevant.py 的函数。但是,从目录树的不同级别导入脚本会导致必要的导入结构发生变化。

other_relevant.pysub_sub_main.py 中的代码依赖于 subsubdir1subsubdir2subsubdir3 中其他 python 文件中的代码。当我更改导入这两个文件的位置时,必须更改这些子目录中所有 python 文件中的导入语句。

如果我运行main.pysub_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.pyother_relevant.py 的位置更改subdir 中文件中的所有导入语句?

【问题讨论】:

    标签: python python-3.x import directory python-import


    【解决方案1】:

    将环境变量PYTHONPATH 设置为您的顶级文件夹路径。然后,无论您在何处执行 python 脚本,所有导入语句都将相对于此文件夹进行。 例如从sub_main2.py 你可以这样做:

    from dir.subdir.subdir3 import *
    

    可以通过获取位于文件夹路径的 sourceme.sh 文件来设置 env 变量。如果只使用一个项目,则直接在 .bashrc 中。

    示例sourceme.sh:

    export PYTHONPATH=`pwd -P`
    

    【讨论】:

    • 这个可以加到bashrc文件中吗?
    猜你喜欢
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 2015-07-23
    相关资源
    最近更新 更多