当 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 上时,如何运行它?的主要内容,如果未能解决你的问题,请参考以下文章

当原点不在网格上时,如何将网格/游戏对象放置在相机的 FoV 中间?

当客户端不在同一 IP 上时,无法通过客户端调用节点服务器

从 OS X 中的 main 返回但不在 linux 上时中止陷阱 6

当滚动视图子视图不在屏幕上时,手势识别器不起作用

当邮件服务器不在网络主机上时发送邮件和 MX 记录

当用户在聊天屏幕上时,如何使 FCM 通知不显示通知消息?