Mam istniejącego virtualenv z wieloma pakietami, ale starą wersję Django.
To, co chcę zrobić, to zduplikować to środowisko, więc mam inne środowisko z dokładnie tymi samymi pakietami, ale nowszą wersją Django. Jak mogę to zrobić?
Mam istniejącego virtualenv z wieloma pakietami, ale starą wersję Django.
To, co chcę zrobić, to zduplikować to środowisko, więc mam inne środowisko z dokładnie tymi samymi pakietami, ale nowszą wersją Django. Jak mogę to zrobić?
virtualenv -p /path/to/older/venv/bin/python new_venv
a następnie użyć tego, requirements.txt
które zostało wygenerowane popip freeze
Odpowiedzi:
Najłatwiejszym sposobem jest użycie pip do wygenerowania pliku wymagań. Plik wymagań to w zasadzie plik, który zawiera listę wszystkich pakietów Pythona, które chcesz zainstalować (lub już zostały zainstalowane w przypadku pliku wygenerowanego przez pip), oraz ich wersje.
Aby wygenerować plik wymagań, przejdź do oryginalnego virtualenv i uruchom:
pip freeze > requirements.txt
To wygeneruje requirements.txt plik dla ciebie. Jeśli otworzysz ten plik w swoim ulubionym edytorze tekstu, zobaczysz coś takiego:
Django==1.3
Fabric==1.0.1
etc...
Teraz edytuj wiersz, który mówi Django==x.x
do powiedzenia Django==1.3
(lub dowolną wersję, którą chcesz zainstalować w swoim nowym virtualenv).
Na koniec aktywuj swój nowy virtualenv i uruchom:
pip install -r requirements.txt
Pip i automatycznie pobrać i zainstalować wszystkie moduły Pythona wymienione w requirements.txt pliku, bez względu na wersje, które określono!
Could not find a version that satisfies the requirement a_package=#.#.#
Czy mogę łatwo rozwiązać ten problem? Usunąłem linię lub zmieniłem równość na nierówność.
pyenv
również dla. Świetna odpowiedź.
Inną opcją jest użycie virtualenv-clone
pakietu:
Skrypt do klonowania nieprzenoszalnego virtualenv.
virtualenv-clone
po aktywacji virtualenv
virtualenvwrapper
udostępnia polecenie duplikowania virtualenv
cpvirtualenv ENVNAME [TARGETENVNAME]
Najłatwiejszą opcją jest użycie virtualenv-clone
pakietu.
Aby zduplikować venv1
w venv2
, wykonaj następujące kroki:
Zainstaluj virtualenv-clone
w venv1
fikcyjnym środowisku wirtualnym venv_dummy
. Aby stworzyć venv_dummy
:
python -m virtualenv venv_dummy
source venv_dummy/bin/activate
Aby zainstalować virtualenv-clone
:
(venv_dummy): pip install virtualenv-clone
Aby powielić venv1
do venv2
:
(venv_dummy): virtualenv-clone venv1/ venv2/
bin/activate
jeśli zastosujesz się do tej odpowiedzi. Dlaczego musisz edytować bin/activate
?
bin/activate
Czy nie możesz po prostu: