python - pdoc3 ValueError:如果从其他包导入,则找不到文件或模块“xxx”
问题描述
pdoc3 是一个从代码生成文档的好工具。在我的一个项目中,我遇到了一些例外。不知道是不是项目结构造成的。这些是我的两个项目的文件夹结构。
proj_A
-src
-automation
-hl7ctl
(has a definition of HL7CtlClient)
proj_B
-src
-automation
-connctl
-core.py
-utility.py (uses HL7CtlClient)
在 proj_B 的 utility.py 中,我必须从 project_A 导入一个类
from automation.hl7ctl import HL7CtlClient
在 proj_B 的 src 文件夹中运行 pdoc3 会导致以下错误。proj_A 已使用“sudo pip3 install proje_A.gz”安装
automation.connctl.core pdoc3 的代码中没有名为“automation.hl7ctl”的模块:
(见https://github.com/pdoc3/pdoc/blob/master/pdoc/init .py# L519)
Traceback (most recent call last):
File "/usr/local/bin/pdoc3", line 11, in <module>
load_entry_point('pdoc3==0.5.5.dev13+g43f28dd.d20190427', 'console_scripts', 'pdoc3')()
File "/usr/local/lib/python3.6/dist-packages/pdoc3-0.5.5.dev13+g43f28dd.d20190427-py3.6.egg/pdoc/cli.py", line 419, in main
for module in args.modules]
File "/usr/local/lib/python3.6/dist-packages/pdoc3-0.5.5.dev13+g43f28dd.d20190427-py3.6.egg/pdoc/cli.py", line 419, in <listcomp>
for module in args.modules]
File "/usr/local/lib/python3.6/dist-packages/pdoc3-0.5.5.dev13+g43f28dd.d20190427-py3.6.egg/pdoc/__init__.py", line 943, in __init__
m, docfilter=docfilter, supermodule=self, context=self._context)
File "/usr/local/lib/python3.6/dist-packages/pdoc3-0.5.5.dev13+g43f28dd.d20190427-py3.6.egg/pdoc/__init__.py", line 943, in __init__
m, docfilter=docfilter, supermodule=self, context=self._context)
File "/usr/local/lib/python3.6/dist-packages/pdoc3-0.5.5.dev13+g43f28dd.d20190427-py3.6.egg/pdoc/__init__.py", line 940, in __init__
m = import_module(fullname)
File "/usr/local/lib/python3.6/dist-packages/pdoc3-0.5.5.dev13+g43f28dd.d20190427-py3.6.egg/pdoc/__init__.py", line 520, in import_module
raise ValueError('File or module {!r} not found'.format(module))
ValueError: File or module 'automation.connctl.core' not found
这就是我运行 pdoc3 的方式:
cd src
pdoc3 --overwrite --html --html-dir ../docs/APIs --template-dir ../docs/templates automation
有__init__.py
自动化及其子文件夹,但没有“src”。
自动化/__init__.py
具有以下内容:
__import__("pkg_resources").declare_namespace(__name__)
解决方案
pydoc 和 pdoc 阅读您的代码!!!
如果您将从同一目录运行它,pdoc --html .
或者pydoc -w .
如果所有模块都在同一目录中,它应该可以工作。但如果不是:
确保每个目录中的模块都附加了它的 sys 完整路径。
sys.path.append("D:/Coding/project/...the path the model is in")
或者,更好的是,您可以使用 python 来获取路径:
path = os.path.dirname(os.path.abspath(__file__))
sys.path.append(path)
相对路径不会成功!
推荐阅读
- git - “blob”真的意味着 git 中的“二进制大对象”吗?
- angular - 尝试将输入类型实现为角度材料中的文件上传
- java - Apache Oltu 以外的 Java OAuthClient
- c# - C# - 从 Directory.GetDirectories() 和 Directory.GetFiles() 中排除目录和文件
- javascript - JavaScript 数组自行排序
- mysql - 获取加入第二个表的聚合平均值并将它们显示在第一个表中的每个值旁边
- angular - 带有文件上传器提交事件的角度表单不起作用
- sql - 为什么某些嵌套聚合案例不起作用?
- swift - UIImageView 的变化取决于它的状态
- dictionary - 如何使用 python netcdf4 将 OrderedDict 写入 netcdf?