美好的一天,
我遇到了一些问题,一些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
我写了一个Basic Argument-Parsing Python Script来解析命令行参数并将其作为问候打印回来。如果参数不存在,将要求一个参数作为原始输入输入。显式调用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
答案 0 :(得分:0)
我在搜索的前几次找不到答案,但我终于在另一个stackoverflow帖子中遇到了它。
来自the post:
我想我解决了这个问题。由于某种原因,在第二个位置 注册表(除了存储在文件中的文件关联所示) HKEY_CLASSES_ROOT \ Python.File \壳\开放\命令):
[HKEY_CLASSES_ROOT \应用程序\ python.exe \壳\开放\命令] @ =“\”C:\ Python25 \ python.exe \“\”%1 \“%*”
这似乎是我系统的控制设置。注册表 上面的设置添加“%*”将所有参数传递给python.exe(它 由于某种原因在我的注册表中丢失了。)
在这行的末尾添加'%*'对我有用,虽然它似乎并不适合所有人。
答案 1 :(得分:0)
还有另一个需要更正的注册表项。根据{{3}}帖子,您需要修改
HKEY_CLASSES_ROOT\py_auto_file\shell\open\command
为"C:\PythonPath\python.exe" "%1" %*