允许在CLI之外运行的Python脚本不接受命令行参数

允许在CLI之外运行的Python脚本不接受命令行参数,python,windows,python-2.7,argparse,Python,Windows,Python 2.7,Argparse,在windows 7中,如果python(2.7.10)脚本已与python解释器关联,并且扩展已在PATHEXT(windows)列表中注册,则启动脚本时,只需键入: MyPythonScript 而不是传统的: python MyPythonScript.py 这很好,但是它不再(似乎)接受命令行参数了。例如,考虑下面两个示例,这些脚本采用命令行参数。首先是传统方式: >>>> python echo_input.py --help usage: echo_i

在windows 7中,如果python(2.7.10)脚本已与python解释器关联,并且扩展已在PATHEXT(windows)列表中注册,则启动脚本时,只需键入:

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 = []
它似乎不再识别命令行参数。仅供参考:如果运行该脚本,则上面的脚本(默认情况下)会打印出这5行,并输出以下所示的任何参数以进行对比:

>python echo_input.py

simple_value     = None
constant_value   = None
boolean_switch   = False
collection       = []
const_collection = []
因此,它似乎已经失去了接受命令行参数的能力,例如一个简单的帮助标志

我对这个问题的答案和解决办法都感到困惑,如果有任何建议或经验,我将不胜感激

提前感谢您抽出时间……:-)

灵感来源:

这行得通吗(感谢@eryksun建议的修复程序——我再也没有Windows机器了)


这将在
HKLM\SOFTWARE\Classes
中添加/修改ProgId。根据当前配置,您可能还必须在浏览器的“打开方式”对话框中选择此ProgId(
Python.File
)。

这不是argparse问题。这是一个
sys.argv
中有什么的问题。
C:\>ftype Python.File="C:\Python27\python.exe" "%1" %*
C:\>assoc .py=Python.File