Repo 就是这样,有 2 个用于“单独模块”的文件夹
regression_testing_package
和 regressin_testing_common
,但两者共享相同的命名空间 regression_testing
都使用自己的诗歌配置进行管理,并且都有自己的 sphinx 文档配置。
在我们的Python代码中,
regression_testing_package
内部有一些函数使用来自regression_testing_common
的函数以及像from regression_testing.common.deprecation import deprecated
这样的导入,工作没有任何问题
这是文件夹结构
Root - repo is called regression_testing_package
regression_testing_package (managed using poetry
src
regression_testing
folder_a
folder_b
docs
_source (all sphinx config/files are in here and publish ../ to docs)
regression_testing_common
src
regression_testing
common
docs
_source (all sphinx config/files are in here and publish ../ to docs)
尝试为
regression_testing_package
构建文档时,autodoc 会发出这样的警告 WARNING: autodoc: failed to import module 'pipelines' from module 'regression_testing.azure'; the following exception was raised: No module named 'regression_testing.common'
因此无法为管道模块构建文档,因为文件顶部包括
from regression_testing.common.deprecation import deprecated
,因为我正在努力弃用某些功能。
我的
conf.py
包含以下内容(包括调试行)
import sys
import toml
from pathlib import Path
src_path = Path(__file__).resolve().parents[2] / 'src'
regression_testing_path = Path(__file__).resolve().parents[3] / 'regression_testing_common' / 'src'
print(f"src_path exists: {src_path.exists()}, path: {src_path}")
print(f"regression_testing_path exists: {regression_testing_path.exists()}, path: {regression_testing_path}")
sys.path.insert(0, str(src_path))
sys.path.insert(1, str(regression_testing_path))
os.system("pip list")
运行时
make html
我可以从 2 个打印语句中看到,添加的路径确实指向两个模块的 src
文件夹
src_path exists: True, path: C:\Users\Karl.Hudgell\Documents\Work\HE\regression-testing-package\regression_testing_package\src
regression_testing_path exists: True, path: C:\Users\Karl.Hudgell\Documents\Work\HE\regression-testing-package\regression_testing_common\src
pip list
命令似乎也显示模块已安装
PyYAML 6.0.1
recommonmark 0.7.1
regression-testing-common 0.1.2
regression-testing-package 3.0.9a1 C:\Users\Karl.Hudgell\Documents\Work\HE\regression-testing-package\regression_testing_package
reportlab 4.0.7
requests 2.31.0
但无论我做什么,我似乎都无法生成文档来查看
regression-testing-common
中的功能
删除那些 sys.path.insert() 黑客行为。 确保在启动解释器或文档工具之前正确设置 PYTHONPATH 环境变量。
使用 python -m site 帮助调试配置问题。