Activate a virtualenv with a Python script Ask Question

Activate a virtualenv with a Python script Ask Question

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:

これは可能ですか?

関連する:

virtualenv › スクリプトから env を呼び出す

ベストアンサー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 でもほぼ動作するはずです。

おすすめ記事