[英]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__.py
有import 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.