pdoc3 ValueError:如果从其他软件包导入,则找不到文件或模块“ xxx”

时间:2019-04-28 03:43:59

标签: python documentation-generation pdoc

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导致以下错误。已使用'sudo pip3 install proje_A.gz'安装了proj_A

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__)

1 个答案:

答案 0 :(得分:0)

pydoc和pdoc读取您的代码!!!

如果要从同一目录pdoc --html .pydoc -w .运行它 如果所有模块都在同一目录中,它应该可以工作。但是如果不是这样的话:

确保每个目录中的主模块都具有sys完整路径(附加到同一目录)。

sys.path.append("D:/Coding/project/....)

相对路径不会解决问题!