4

展開で virtualenvwrapper を使用しています。新しい環境をセットアップするために、必要なすべての手順を含む Python スクリプトを実行しています。

setupscript には以下が含まれます。

cmd = 'mkvirtualenv %s --no-site-packages'%('testname')
head = subprocess.Popen(cmd,shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in head.stdout.read().splitlines():
    print line

出力は次のとおりです。

/bin/sh: mkvirtualenv: not found

Python スクリプト内で virtualenvwrapper を正しく使用するにはどうすればよいですか?

編集:

次のコードは私にとってはうまくいきます:

cmd = 'source /usr/local/bin/virtualenvwrapper.sh && mkvirtualenv %s --no-site-packages'%('testname')
head = subprocess.Popen(cmd, executable='bash', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in head.stdout.read().splitlines():
    print line

すべての回答に感謝します。

4

2 に答える 2

5

mkvirtualenvvirtualenvwrapper.shシェルの起動ファイルからスクリプトを取得することによって環境に追加されるシェル関数である可能性があります。で呼び出されるデフォルトのコマンドshell=True(例: /bin/sh -c ...) は、それを読み取らない可能性があります。

ファイルを明示的に入手できます。

import pipes
from subprocess import check_call

check_call("""source /path/to/virtualenvwrapper.sh &&
    mkvirtualenv --no-site-packages """ + pipes.quote(envname),
    executable='bash', shell=True)
于 2013-08-20T15:17:53.653 に答える