gpt4 book ai didi

python以git安全的方式从子目录导入

转载 作者:太空狗 更新时间:2023-10-29 13:43:59 26 4
gpt4 key购买 nike

这是我当前的目录结构:

proj/
proj/__init__.py
proj/submodFolder/
proj/submodFolder/submod/
proj/submodFolder/submod/__init__.py

我正在写一个项目,我想在 proj/__init__.py 中有 import submod 甚至 import submodFolder.submod .但是,如果 submodFolder 中没有 __init__.py,这将不起作用。

假设 submodFolder 是一个 git 存储库,我已经对其进行了子存储(如果您愿意的话,是第三方库);添加必需的 __init__.py 将破坏 git 子库并使从其主库更新库变得复杂。

假设 submodFolder 是一个不可变的 git sub-repo 将 python 从 dirtree 推送到模块的最佳方法是什么?修改 python 路径对我来说似乎是最接近的解决方案——但是已经提出的所有问题都没有假定不可变的 submodFolder。

欢迎举例,注意相对路径。

最佳答案

如果你不想修改 PYTHONPATH 环境变量,你可以修改 proj/__init__.py 中的 sys.path,下面应该可以工作:

import sys
import os
sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'submodFolder'))

import submod

带有注释的分步代码,因此更有意义:

# get absolute path to proj/__init__.py
script_path = os.path.realpath(__file__)

# strip off the file name to get the absolute path to proj
proj_path = os.path.dirname(script_path)

# join on os.sep to get absolute path to proj/submodFolder
submod_path = os.path.join(proj_path, 'submodFolder')

# add the complete path to proj/submodFolder to sys.path
sys.path.append(submod_path)

关于python以git安全的方式从子目录导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11804537/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com