概要
小ネタ。
venvで仮想環境を作って activate した状態だと、sysモジュールの以下のプロパティの値が異なる状態となります。
- sys.prefix
- sys.exec_prefix
- sys.base_prefix
- sys.base_exec_prefix
仮想環境だと、baseなしの方が 仮想環境のパス、baseありの方がvenv元のパスを示します。
仮想環境で入っていない場合は、baseなしとありの両方が同じ値を示します。
サンプル
""" sys モジュールについてのサンプルです. venv 環境での - sys.prefix - sys.exec_prefix - sys.base_prefix - sys.base_exec_prefix の値について. REFERENCES:: http://bit.ly/2Vun6U9 http://bit.ly/2Vuvqn6 """ import sys from trypython.common.commoncls import SampleBase from trypython.common.commonfunc import pr, hr class Sample(SampleBase): def exec(self): # -------------------------------------------- # venv で仮想環境を作り、 activate している状態だと # sys モジュールの prefixとbase_prefixの値が異なる # 状態となる。仮想環境を使っていない場合、同じ値となる. # -------------------------------------------- pr('prefix', sys.prefix) pr('exec_prefix', sys.exec_prefix) hr() pr('base_prefix', sys.base_prefix) pr('base_exec_prefix', sys.base_exec_prefix) pr('venv 利用している?', sys.prefix != sys.base_prefix) def go(): obj = Sample() obj.exec() if __name__ == '__main__': go()
try-python/sys03.py at master · devlights/try-python · GitHub
仮想環境の中で実行すると、例えば以下のように出力されます。
prefix='/Users/xxxx/.local/share/virtualenvs/try-python' exec_prefix='/Users/xxxx/.local/share/virtualenvs/try-python' -------------------------------- base_prefix='/usr/local/Cellar/python/3.7.2_2/Frameworks/Python.framework/Versions/3.7' base_exec_prefix='/usr/local/Cellar/python/3.7.2_2/Frameworks/Python.framework/Versions/3.7' venv 利用している?=True
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場