pipは、pypiのWebサイトでこのモジュールを見つけることができません。その秘密、インストール方法を教えてください。
Subprocess.callを介して新しいシェルプロセスを生成するモジュールが必要です。私は多くの例を見てきましたが、人々はimport subprocess
、しかしそれがどのようにインストールされたかは誰にも示されません。
エラー、私が得た(念のために私が気を失い、何が起こっているのか理解していない場合):
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\Users\Alexander\Desktop\tests-runner>python run.py
Traceback (most recent call last):
File "run.py", line 165, in <module>
main()
File "run.py", line 27, in main
subprocess.call('py.test')
File "C:\Python27\lib\subprocess.py", line 522, in call
return Popen(*popenargs, **kwargs).wait()
File "C:\Python27\lib\subprocess.py", line 710, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 958, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
Python 2.7にこのモジュールをインストールする必要はありません。これは組み込みの標準モジュールです。
documentation は、それがPython version 2.4。のためにライブラリに追加されたことを示しています。これは長い間私たちと共にありました。
質問の更新で表示されるエラーは、ファイルが見つからないというエラーほど散文的ではありません。 Popen
を呼び出そうとしている実行可能ファイルが見つからない可能性があります。
そのトレースバックは、subprocess
がインストールされ、インポートされたことを示します。問題は、単にsubprocess.call('py.test')
の呼び出しが失敗することです。
将来の参考のために、これはインストールされていないモジュールをインポートしようとしたときに発生するトレースバックのタイプです。
>>> import foo Traceback(most recent call last): File ""、1行目、 ImportError:foo [.____という名前のモジュール。]
エラーテキストは誤解を招くものです。ほとんどのサブプロセスコマンドは、shellcmdが文字列のリストとして送信されることを想定しています。
これらの場合、shlexモジュールの使用を強くお勧めします。
import shlex
Shell_cmd = "py.test" # or should it be "test.py" ?
subprocess_cmd = shlex.split(Shell_cmd)
subprocess.call(subprocess_cmd)
または、この単純な場合だけで:
subprocess.call(["py.test"])