1

再会,

我遇到了一些 Python 应用程序在 Windows 7 中没有正确调用它们的依赖项的问题。这些应用程序将直接调用它们的 Python 依赖项,而不是作为 python.exe 的参数。与更改依赖链中的每个文件以首先调用 python 命令相反,有没有办法直接调用 Python 文件并正确传递参数,或者这是对 Python 的不正确调用?

注意:我将 python.exe 设置为 .py 文件的默认程序

C:\Users\***>ftype | findstr -i python
Python.CompiledFile="C:\Python27\python.exe" "%1" %*
Python.File="C:\Python27\python.exe" "%1" %*
Python.NoConFile="C:\Python27\pythonw.exe" "%1" %*

C:\Users\***>assoc | findstr -i python
.py=Python.File
.pyc=Python.CompiledFile
.pyo=Python.CompiledFile
.pyw=Python.NoConFile

我编写了一个基本参数解析 Python 脚本,它将解析命令行参数并将其作为问候语打印回来。如果参数不存在,则会要求将其作为原始输入输入。首先显式调用 Python 而不这样做的结果打印在下面:

C:\Users\***\Desktop>python input.py --greeting="john"
john
The greeting is:  john

C:\Users\***\Desktop>input.py --greeting="john"
None
Give me the greeting. johnrom
The greeting is:  johnrom
4

2 回答 2

0

前几次搜索都找不到答案,但我终于在另一个 stackoverflow 帖子中找到了答案。

帖子

我想我解决了这个问题。由于某种原因,注册表中有第二个位置(除了存储在 HKEY_CLASSES_ROOT\Python.File\shell\open\command 中的文件关联显示的位置):

[HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command] @="\"C:\Python25\python.exe\" \"%1\" %*"

这似乎是我系统上的控制设置。上面的注册表设置添加了“%*”以将所有参数传递给 python.exe(由于某种原因,它在我的注册表中丢失了)。

在这一行的末尾添加 '%*' 对我有用,尽管它似乎对每个人都不起作用。

于 2012-09-02T07:36:33.163 回答
0

您还需要更正另一个注册表项。根据这篇文章,您需要编辑

HKEY_CLASSES_ROOT\py_auto_file\shell\open\command

成为"C:\PythonPath\python.exe" "%1" %*

于 2015-06-19T23:07:37.563 回答