I want to activate a virtualenv instance from a Python script.
I know it's quite easy to do, but all the examples I've seen use it to run commands within the env and then close the subprocess.
私は、bin/activate と同じように、単に virtualenv をアクティブにしてシェルに戻りたいだけです。
このようなもの:
$me: my-script.py -d env-name
$(env-name)me:
これは可能ですか?
関連する:
ベストアンサー1
virtualenv の下で Python サブプロセスを実行する場合は、virtualenv のbin/
ディレクトリ内にある Python インタープリターを使用してスクリプトを実行することで実行できます。
import subprocess
# Path to a Python interpreter that runs any Python script
# under the virtualenv /path/to/virtualenv/
python_bin = "/path/to/virtualenv/bin/python"
# Path to the script that must run under the virtualenv
script_file = "must/run/under/virtualenv/script.py"
subprocess.Popen([python_bin, script_file])
ただし、サブプロセスではなく現在のPythonインタープリターの下で仮想環境をアクティブにしたい場合は、次のように呼び出すことができます。exec
次のようにスクリプトを渡しますactivate_this.py
。
# Doing exec() on this file will alter the current interpreter's
# environment so you can import libraries in the virtualenv
activate_this_file = "/path/to/virtualenv/bin/activate_this.py"
exec(open(activate_this_file).read(), {'__file__': activate_this_file})
venv を使用する場合は、virtualenv の activate_this.py の実装をコピーできます。わずかな変更を加えるだけで、venv でもほぼ動作するはずです。