繁体   English   中英

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

[英]python import from sub-directory in a git safe way

这是我当前的目录结构:

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

我正在写一个项目,我想在proj/__init__.pyimport submod甚至import submodFolder.submod proj/__init__.py 但是,如果在submodFolder中没有__init__.py ,则无法使用。

假设submodFolder是我已子仓库的git存储库(如果愿意,则为第三方库); 添加必需的__init__.py将破坏git subrepo,并使来自其主存储库的更新库复杂化。

假设submodFolder是一个不可变的git sub-repo,什么是将python向下推送到模块的最佳方法是什么? 修改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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM