当 pydoc 似乎不在 PATH 上时,如何运行它?

Posted

技术标签:

【中文标题】当 pydoc 似乎不在 PATH 上时,如何运行它?【英文标题】:How can I run pydoc when it doesn't appear to be on the PATH? 【发布时间】:2017-06-28 23:24:30 【问题描述】:

我正在使用 MACOSX 10.12.3 和 Python 3.52

在 python IDLE 的 bash 脚本中运行 pydoc 时遇到问题。 例如:

    myFile = ‘/home/user/afile.py’
    import subprocess
    subprocess.run([‘pydoc’, ‘-w’, myFile])

不可避免地不会像预期的那样创建 html 文件。 另一方面,当我在终端中运行 pydoc 时

pydoc3 -w /home/user/afile.py

它总是创建想要的 html 文件。但是pydoc -w /home/user/afile.py会报错

这是因为:

    python/home/user/afile.py 包含一些 python3 样式的打印语句。即:print('blabla') 而不是:print 'blabla',就像在 python2 上的情况一样。 IDLE 中的 bash 脚本没有加载正确的 pydoc。我还要提一下,运行subprocess.run([‘pydoc3’, ‘-w’, myFile]) 会产生错误,例如:

subprocess.run(['pydoc3', '-w', myFile]) 文件 "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/subprocess.py", 第 693 行,运行中 使用 Popen(*popenargs, **kwargs) 作为进程:文件“/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/subprocess.py”, 第 947 行,在 init 中 restore_signals,start_new_session)文件“/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/subprocess.py”, 第 1551 行,在 _execute_child 中 raise child_exception_type(errno_num, err_msg) FileNotFoundError: [Errno 2] No such file or directory: 'pydoc3'

请问有没有人可以解决这个问题?

【问题讨论】:

【参考方案1】:

问题 1: 关于针对 python 2 代码运行 python 3 版本的 pydoc - 那行不通。 Pydoc 将执行(导入)目标模块。您需要通过修改路径或使用您喜欢的虚拟环境工具来使用 python 2 版本的 pydoc。

问题 2: 如果您可以获得对所需 python 安装的引用(通过设置路径或激活虚拟环境),那么您可以使用以下语法处理丢失或损坏的入口点:

python -m pydoc -w myfile

您还需要确保 myfile 位于当前目录或 PYTHONPATH 中或以其他方式可导入

【讨论】:

以上是关于当 pydoc 似乎不在 PATH 上时,如何运行它?的主要内容,如果未能解决你的问题,请参考以下文章