pyvenv
i moduł venv
nie obsługują tego po wyjęciu z pudełka. Trzecia strona zawiera pakiet virtualenv
does support this using activate_this.py
, ale that feature was not included in the built-in venv
module.
Możesz spróbować pożyczyć kopię activate_this.py
ze środowiska opartego na virtualenv
; Wydaje się, że działa, ale nie mogę przysiąc, że to będzie idealne (venv
/pyvenv
używa jakiejś magii podczas uruchamiania, niejasne, czy wszystko to jest replikowane przez activate_this.py
).
Dokumenty dla tego są nieaktualne dla Python 3 (twierdzą, że używasz execfile
, która nie istnieje). Python 3 kompatybilny alternatywą byłoby:
activator = 'some/path/to/activate_this.py' # Looted from virtualenv; should not require modification, since it's defined relatively
with open(activator) as f:
exec(f.read(), {'__file__': activator})
Nic activate_this.py
nie jest magiczne, więc można ręcznie wykonać te same zmiany bez plądrowania virtualenv
(dostosowanie PATH
, sys.path
, sys.prefix
, itp), ale sprawia, że wiele pożyczek prostsze w tym przypadku.
Tak, skrypt aktywacja zależy od platformy: https://docs.python.org/3/library/venv.html –
także aktywacja w procesie Pythona nie ma całkowicie sensu. Możesz aktywować virtualenv, a następnie użyć interpretera Pythona należącego do tego virtualenv. –
Myślę, że jeśli przeczytasz tutaj, zobaczysz, dlaczego ma to sens: http://virtualenv.readthedocs.org/en/latest/virtualenv.html#using-virtualenv-without-bin-python To jest funkcja I szukam tego, co wydaje się być nieobecne w pyvenv. –