【问题标题】:Windows 7 - pydoc from cmdWindows 7 - 来自 cmd 的 pydoc
【发布时间】:2010-11-10 21:30:46
【问题描述】:

好的,我有一个时刻让我怀疑自己使用电脑的能力。这不是我想在我的第一个 SO 帖子中提出的那种问题,但这里是这样。

开始学习 Zed 的新书“Learn Python the Hard Way”,因为我在中断了 10 年之后一直希望重新开始编程,而 python 一直是我想要的。这本书真的和我说话了。话虽如此,我在命令中遇到了一个严重的 pydoc 问题。我的系统路径中有 c:/python26 中的所有目录,无论 pwd 如何,我都可以从命令行执行 pydoc,但它不接受任何参数。不管我输入什么,我都会得到标准的 pydoc 输出,告诉我可接受的参数。

有什么想法吗?无论如何,我按照 Zed 的建议安装了 ActivePython。

C:\Users\Chevee>pydoc file
pydoc - the Python documentation tool

pydoc.py <name> ...
    Show text documentation on something.  <name> may be the name of a
    Python keyword, topic, function, module, or package, or a dotted
    reference to a class or function within a module or module in a
    package.  If <name> contains a '\', it is used as the path to a
    Python source file to document. If name is 'keywords', 'topics',
    or 'modules', a listing of these things is displayed.

pydoc.py -k <keyword>
    Search for a keyword in the synopsis lines of all available modules.

pydoc.py -p <port>
    Start an HTTP server on the given port on the local machine.

pydoc.py -g
    Pop up a graphical interface for finding and serving documentation.

pydoc.py -w <name> ...
    Write out the HTML documentation for a module to a file in the current
    directory.  If <name> contains a '\', it is treated as a filename; if
    it names a directory, documentation is written for all the contents.


C:\Users\Chevee>

编辑:新信息,pydoc 在 PowerShell 中运行良好。作为一个 linux 用户,我不知道为什么要尝试使用 cmd ——但我仍然很想弄清楚 pydoc 和 cmd 是怎么回事。

编辑 2:更多新信息。在cmd中...

c:\>python c:/python26/lib/pydoc.py file

...工作得很好。只需在 PowerShell 中使用 pydoc,一切都可以正常工作,而无需我担心 pwd、扩展名或路径。

【问题讨论】:

  • 显示一个指示问题的示例控制台会话,最好是从 cmd 窗口复制/粘贴的会话。 (编辑您的帖子,不要添加答案或评论)。此外,在编辑窗口中选择文本后使用 10101010 按钮将其格式化为代码。
  • 如果以pydoc.py ... 而不是pydoc ... 输入命令会发生什么?
  • @Jim Garrison - 相同的输出。我将 for.py 的文件关联设置为 python.exe,因此我不必键入扩展名。这可能是我的问题吗?
  • @Jim 这几乎肯定是你的问题。我不认为您可以从 Windows 上的命令行运行这样的脚本。虽然不是积极的。

标签: python pydoc


【解决方案1】:

在 Windows Powershell 中使用:python -m pydoc

例子:

python -m pydoc 打开

python -m pydoc raw_input

python -m pydoc argv

【讨论】:

    【解决方案2】:

    当您在 windows 命令提示符下键入文件名时,cmd 可以检查 windows 注册表中的默认文件关联,并使用该程序打开它。因此,如果 Inkscape 安装程序将 .py 文件与其自己的 python 版本相关联,cmd 可能会优先运行它并完全忽略 PATH。见this question

    【讨论】:

      【解决方案3】:

      根据您的第二次编辑,您的路径中可能有多个 pydoc.py 副本,其中第一个是“错误的”,这样在启动时它没有正确的执行环境。

      【讨论】:

      • 我也是这么想的,所以就去找了。我的路径包含 /python26、/python26/scripts、/python26/lib。而已。对我的文件系统的彻底搜索发现了 python/26/lib 和 /program files/inkscape/python/lib 中的 pydoc.py。 Inkscape 版本不在我的路径中。当我执行 'pydoc' 时,有没有办法监控 cmd 和 PowerShell 正在做什么?
      【解决方案4】:
      python -m pydoc -k/p/g/w <name>
      

      【讨论】:

      • 你能在这里添加一些解释吗?
      【解决方案5】:

      Windows 上 pydoc 的语法:

      alt1:

      C:\path\PythonXX\python.exe C:\path\PythonXX\Lib\pydoc.py -k/p/g/w X:\path\file_to_doc.py

      alt2:

      python -m pydoc -k/p/g/w X:\path\file_to_doc.py

      其中后者是首选,呵呵。但是,它要求您的 Windows 安装已将 python 注册到环境变量“Path”。

      设置windows环境变量:

      查看this site 以获取有关在哪里找到它们的指南。您要寻找的是“路径”。如果您选择路径并单击编辑,您将看到一长排指向不同文件夹的路径。您在此处看到的路径基本上允许您通过输入程序名称而不是整个路径来在命令行中访问各种程序。因此,您在这里要做的是找到您的 Python 安装并复制其完整路径,如下所示:X:\subfolders\PythonXX\ 然后将其添加到长行路径的最后,如下所示:

      X:\earlier\path\to\something;X:\subfolders\PythonXX\

      注意“;”将不同的路径分开,请确保不要忘记它。完成后,单击确认/确定,然后您需要重新启动任何已打开的 cmd.exe。

      pydoc.py

      问题是pydoc是标准python库的一个模块,它也是由python驱动的。据我所知,Windows 环境要求您指定要使用哪个程序运行某个文件。因此,要运行我们将使用的 pydoc.py 文件:

      在 windows cmd.exe 中打开文件:

      X:\subfolders\Python27\python.exe X:\subfolders\Python27\Lib\pydoc.py

      pydoc.py 的论点:

      pydoc.py 带有一系列基于命令行的功能,允许您输入某些参数: -k/p/g/w 其中会触发 pydoc.py-program 的不同行为。

      通过命令行向程序发送参数:

      输入这些参数的语法是我所知道的 x:\pathtofile\filename.suffix 之后的语法,由一个简单的空格分隔。这给了我们决赛:

      alt1:

      X:\subfolders\Python27\python.exe X:\subfolders\Python27\Lib\pydoc.py -w X:\path\file_to_doc.py

      alt2(python 注册到路径):

      python -m pydoc -w X:\path\file_to_doc.py

      w”选项将为您提供一个 HTML 文档,用于您要在其上运行文档的文件。请注意, pydoc.py 将(根据我的测试)在当前工作目录中创建文档文件。这意味着在实际运行命令之前,您需要将自己放置在选择的文件夹中。

      -m的作用

      在我能找到的东西中,-m 似乎处理注册表项,至少在 msiexec.exe 中。我想它可能会以这种方式用于一般程序。所以我的推测是,如果应用“-m”,将重写后面的参数路径,以便将 .exe 文件用作路径引用。但正如所说,相当投机。

      -m 重写所有必需的特定于计算机的注册表项。 (在 msiexec.exe 中)根据Microsoft

      【讨论】:

        猜你喜欢
        • 2011-08-11
        • 1970-01-01
        • 2019-07-12
        • 2011-03-24
        • 2015-03-10
        • 2011-07-21
        • 2013-11-26
        • 2023-03-07
        • 2014-09-03
        相关资源
        最近更新 更多