2016-01-17 155 views
1

在Windows 7中,如果python(2.7.10)脚本已经与Python解释器相关联,并且扩展名已在PATHEXT中注册(windows )列表中,那么当你揭开序幕脚本,可以简单地键入:启用CLI运行的Python脚本不带命令行参数

MyPythonScript 

代替传统:

python MyPythonScript.py 

这是伟大的 - 但不再是(出现的话)采取命令在线参数。例如,请考虑以下两个采用命令行参数的脚本示例。首先,传统的方式:

>>>> python echo_input.py --help 

usage: echo_input.py [-h] [-s SIMPLE_VALUE] [-c] [-t] [-f] [-a COLLECTION] 
        [-A] [-B] [--version] 

optional arguments: 
    -h, --help  show this help message and exit 
    -s SIMPLE_VALUE Store a simple value 
    -c    Store a constant value 
    -t    Set a switch to true 
    -f    Set a switch to false 
    -a COLLECTION Add repeated values to a list 
    -A    Add different values to list 
    -B    Add different values to list 
    --version  show program's version number and exit 

工作得很好,但如果它被调用的替代方式:

echo_input --help 

simple_value  = None 
constant_value = None 
boolean_switch = False 
collection  = [] 
const_collection = [] 

这似乎不再识别的命令行参数。 FYI:如果运行它瓦特/出任何参数上面的脚本(默认),打印出的5号线,如下图所示的对比:

>python echo_input.py 

simple_value  = None 
constant_value = None 
boolean_switch = False 
collection  = [] 
const_collection = [] 

所以看起来好像它已经失去了它的承担能力命令行参数,例如简单的帮助标志。

我被困在这个问题的答案和解决办法,将不胜感激任何建议或经验。

预先感谢您的宝贵时间... :-)灵感

来源:

Registering Python Scripts to run on Windows

Python FAQ2:

+0

这不是一个问题。这是'sys.argv'中的问题。 – hpaulj

回答

2

这是否工作(感谢@eryksun为建议修复 - 我没有Windows机器了)?

C:\>ftype Python.File="C:\Python27\python.exe" "%1" %* 
C:\>assoc .py=Python.File 

这增加/修改HKLM\SOFTWARE\Classes中的ProgId。根据当前配置的不同,您可能还需要在资源管理器的“打开方式”对话框中选择此ProgId(Python.File)。