2

簡単なコードでargparseをインポートする「test.py」というファイルがあります。

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が必要です」というエラーが表示されます-つまり、引数が渡されていません。

Windows での関連付けは次のように設定されています。

assoc .py
.py=Python.File

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

別のコンピューターで動作しているため、これを理解できないようです。パスまたは環境変数が正しく設定されていないと思いますか?

前もって感謝します

4

2 に答える 2

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 に答える
2

ファイルの関連付けにエラーがあると思います。私はこう思います:

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

次のようにする必要があります。

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

(,に変更\)

...これが単なるタイプミスである場合、この質問と回答は興味深いものになる可能性があります。

基本的に、これらの関連付けは、プログラムの実行時に呼び出されるとは限りません。(つまり、私は基本的にあなたと同じ関連付けを持っていますが、「test.py -e hello」のようなpythonプログラムを実行すると、プログラムtest.pyがエディターで開くだけです-実際にはpythonを実行しませんプログラム。)

あなたは両方を見たいかもしれません:

  • HKEY_CURRENT_USER\Software\Classes\.py、および
  • HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.py

そこの協会のために。

于 2012-07-27T20:44:11.800 に答える