3

を使用しvirtualenvてスクリプトを実行しています。このスクリプトでは、次のように呼び出します。

os.system('python anotherScript.py')

私の質問は、スクリプトがvirtualenv呼び出し元スクリプトと同じように実行されるかどうかです。

4

2 に答える 2

4

わかりにくいですが、このスクリプトをアクティブ化された virtualenv で実行している場合は、その virutla 環境にいる必要があります。あなたはあなたの考えを確認することができます

#script.py
import os
os.system('which python')

そしてコマンドラインから

virtualenv newvirtualenv
source newvirtualenv/bin/activate
(newvirtualenv) user@ubuntu: python script.py

あなたはそれが下にあるのを見るべきですnewvirtualenv/bin/python

通常、現在の環境を使用するために実行可能なヘッダーを配置します。

#!/usr/bin/env python
import os
os.system('which python')

これは usenewvirtualenvとは言いませんが、スクリプトが の下で実行される場合、もう少し自信が持てnewvirtualenvます。間違いなくnewvirtualenv.

これを使用する場合/usr/bin/pythonでも、virtualenv で問題ありません。しかし、上級プログラマーの場合、複数の仮想環境と複数の Python バージョンを持つ傾向があります。そのため、場所によっては、環境変数に基づいてスクリプトを実行できます。わずかな利益です。

実行newvirtualenv/bin/python script.pyすると、関係なく virtualenv の下になります。

pythonバイナリが virtualenv のバージョンを指している限り、問題ありません。

于 2013-02-12T18:13:55.020 に答える