簡體   English   中英

pdoc3 ValueError:如果從其他包導入,則找不到文件或模塊“xxx”

[英]pdoc3 ValueError: File or module 'xxx' not found if imported from other package

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

automation 及其子文件夾中有__init__.py ,但沒有“src”。

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

相對路徑不行!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM