无法在 Windows 7 上使用 argparse 和 python 3.4.2 传递参数

can't pass arguements using argparse and python 3.4.2 on Windows 7

我已经升级到 Python 3.4.2 和 argparse(来自 optparse),但似乎都无法识别命令行选项。作为一个简单的测试我 运行 这个;

#test_argparse.py

def main():
    import argparse

    parser = argparse.ArgumentParser(description='Execute database query.')

    parser.add_argument("-q", "--query", dest="query",
                  help="Name of the query file to be run")

    args = parser.parse_args()

    print(args)

if __name__ == '__main__':
     main()

从命令行,当我 运行

test_argparse.py -q get_msre_for_book

我得到:

Namespace(query=None)

但是当我从 IDE 中 运行:

*** Python 3.4.2rc1 (v3.4.2rc1:8711a0951384, Sep 21 2014, 21:16:45) [MSC v.1600 32 bit (Intel)] on win32. ***

Command Line : -q get_msre_for_book
Namespace(query='get_msre_for_book')

我正在尝试通过

启动脚本
os.system('python.exe', '<path to script>test_argparse.py -q get_msre_for_book')

但是失败了,因为如上所示没有显示任何查询。我已经通过使用

启动来解决这个问题
subprocess.call

但我宁愿不必这样做。再次感谢收到的任何建议或想法。

为了结束这个问题,以下是解决问题的 2 条评论:

There are earlier SO questions about passing commandline arguments in Windows 7. The solutions involve getting a registry link right. whosebug.com/questions/2640971, whosebug.com/questions/9880540. e,g, "C:\Python\Python33\python.exe" "%1" %*.

That fixed it - thank you very much - but to be precise the registry entry needs to be C:\Python\Python33\python.exe" "%1" %" (added the final double quote)