这是我目前的目录结构:
proj/
proj/__init__.py
proj/submodFolder/
proj/submodFolder/submod/
proj/submodFolder/submod/__init__.py
我正在编写一个项目,我希望在import submod
中有import submodFolder.submod
甚至proj/__init__.py
。但是,如果在submodFolder中没有__init__.py
,则无效。
假设submodFolder是我已经分回购的git存储库(如果你愿意,可以使用第三方库);添加必需的__init__.py
将打破git subrepo并使更新库与其主存储库复杂化。
假设submodFolder是一个不可变的git子仓库,那么将python从mudree推送到模块的最佳方法是什么?修改python路径似乎是我最接近的解决方案 - 但是已经提出的问题都没有假定为不可变的submodFolder。
示例欢迎,请注意相对路径。
答案 0 :(得分:2)
如果您不想修改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)