首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pdoc3 ValueError:从其他包导入时找不到文件或模块'xxx‘

pdoc3 ValueError:从其他包导入时找不到文件或模块'xxx‘
EN

Stack Overflow用户
提问于 2019-04-28 03:43:58
回答 1查看 1.8K关注 0票数 2

pdoc3是从代码生成文档的一个很好的工具。在我的一个项目中,我遇到了一些例外。想知道这是否是由项目结构引起的。这些是我的两个项目的文件夹结构。

代码语言:javascript
复制
proj_A
  -src
    -automation
      -hl7ctl
        (has a definition of HL7CtlClient)

proj_B
  -src
    -automation
      -connctl
        -core.py
        -utility.py (uses HL7CtlClient)

在utility.py of proj_B中,我必须从project_A导入一个类

代码语言:javascript
复制
from automation.hl7ctl import HL7CtlClient

这会导致以下错误:在pdoc3文件夹下运行proj_B中的src。

automation.connctl.core 3的代码中没有名为“automation.hl7ctl”的模块:

(见.py#L519)

代码语言:javascript
复制
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的:

代码语言:javascript
复制
cd src
pdoc3 --overwrite --html --html-dir ../docs/APIs --template-dir ../docs/templates automation

在自动化和它的子文件夹中有__init__.py,而不是'src‘。

自动化/__init__.py具有以下内容:

代码语言:javascript
复制
__import__("pkg_resources").declare_namespace(__name__)
EN

回答 1

Stack Overflow用户

发布于 2020-08-26 23:32:10

pydoc和pdoc读你的代码!

如果您要从同一个目录( pdoc --html .pydoc -w . )运行它,那么如果所有模块都在同一个目录中,那么它应该可以工作。但如果不是:

确保每个目录中的模块都有sys完整路径附录。

代码语言:javascript
复制
sys.path.append("D:/Coding/project/...the path the model is in")

或者,更好的是,您可以让python获得路径:

代码语言:javascript
复制
path = os.path.dirname(os.path.abspath(__file__))
sys.path.append(path)

相对路径不起作用!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55886830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档