2

我有一个名为“test.py”的文件,它使用简单的代码导入 argparse:

import argparse
parser = argparse.ArgumentParser(description='Description')
parser.add_argument('-e','--event', help='event', required=True)
args = vars(parser.parse_args())
myArgument = args['event']

如果我用 Windows 调用它

python "test.py" -e hello

它工作正常,但如果我尝试直接调用它

test.py -e hello

它正在调用 python,但我得到一个错误“-e/--event is required”——即它没有传递参数。

我在 Windows 中的关联设置为:

assoc .py
.py=Python.File

ftype Python.File
Python.File = "C:\Python27,python.exe" "%1" %*

似乎无法弄清楚,因为我让它在另一台计算机上工作,所以我猜我有一些路径或环境变量没有设置正确?

提前致谢

4

2 回答 2

2

我认为您的文件关联有错误。我认为这:

Python.File = "C:\Python27,python.exe" "%1" %*

应该:

Python.File = "C:\Python27\python.exe" "%1" %*

(更改,\

...如果这只是一个错字,那么这个问题和答案可能会很有趣。

基本上,这些关联不一定是您运行程序时所调用的。(即。我基本上和你有相同的关联,但是如果我运行一个 python 程序,比如:“test.py -e hello”,程序 test.py 只是在我的编辑器中打开 - 它实际上并没有运行 python程序。)

您可能希望同时查看:

  • HKEY_CURRENT_USER\Software\Classes\.py,和
  • HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.py

那里的协会。

于 2012-07-27T20:44:11.800 回答
2

ftype显示了其中的内容,HKEY_LOCAL_MACHINE\Software\Classes但此注册表分支中的值可能已被来自HKEY_CURRENT_USER\Software\Classes. 看看输出是什么reg query HKCU\Software\Classes\Python.File\shell\open\command /ve。我猜您的问题是由于此注册表项中缺少%*片段引起的。

于 2012-07-28T08:14:10.807 回答