[解決済み] Pythonがvirtualenv内で実行されているかどうかを判断する
質問
現在のスクリプトがvirtualenv環境内で実行されているかどうかを判断することはできますか?
どのように解決するのですか?
最も信頼性の高い確認方法は、以下のように
sys.prefix == sys.base_prefix
. これらが等しければ、仮想環境にいないことになり、不等であれば、仮想環境にいることになります。仮想環境の中にいる
sys.prefix
は仮想環境を指し示し
sys.base_prefix
は virtualenv が作成されたシステム Python の接頭辞です。
上記は Python 3 stdlib では常に動作します。
venv
と最近の
virtualenv
(バージョン20以降)です。古いバージョンの
virtualenv
使用される
sys.real_prefix
の代わりに
sys.base_prefix
(そして
sys.real_prefix
は仮想環境の外には存在しなかった)、Python 3.3 以前では
sys.base_prefix
は存在しなかった。したがって、これらのケースをすべて処理する完全に堅牢なチェックは、次のようになります。
import sys
def get_base_prefix_compat():
"""Get base/real prefix, or sys.prefix if there is none."""
return getattr(sys, "base_prefix", None) or getattr(sys, "real_prefix", None) or sys.prefix
def in_virtualenv():
return get_base_prefix_compat() != sys.prefix
サポートされているPythonのバージョンと最新のものだけに関心がある場合
virtualenv
に置き換えることができます。
get_base_prefix_compat()
を単純に
sys.base_prefix
.
を使用することで
VIRTUAL_ENV
環境変数は信頼できません。設定されるのは、virtualenv
activate
シェルスクリプトを使用しますが、virtualenv を起動せずに使用するには、virtualenv の
bin/
(または
Scripts
) ディレクトリの場合
$VIRTUAL_ENV
は設定されません。あるいは、シェルで virtualenv を有効にしている間に非 virtualenv の Python バイナリを直接実行することができます。
$VIRTUAL_ENV
は、実際にはそのvirtualenvで実行されていないPythonプロセスで設定されるかもしれません。
関連
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
[解決済み] builtins.TypeError: strでなければならない、bytesではない
-
[解決済み】Pythonのvirtualenvを離脱/終了/無効化する方法
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] オブジェクトの種類を決定しますか?
-
[解決済み] ローカルディレクトリからrequirements.txtファイルに従ってpipを使用してパッケージをインストールするにはどうすればよいですか?
-
[解決済み] virtualenvで異なるバージョンのPythonを使用する
-
[解決済み] Python 3をvirtualenvで使う
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ピロウズ画像色処理の具体的な活用方法
-
Pythonによるjieba分割ライブラリ
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
PythonによるExcelファイルの一括操作の説明
-
Python LeNetネットワークの説明とpytorchでの実装
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】TypeErrorの修正方法。Unicodeオブジェクトは、ハッシュ化する前にエンコードする必要がある?
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】終了コード -1073741515 (0xC0000135)でプロセス終了)
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない