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ć?
python
django
virtualenv
dolma33
źródło
źródło
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:
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 powiedzeniaDjango==1.3
(lub dowolną wersję, którą chcesz zainstalować w swoim nowym virtualenv).Na koniec aktywuj swój nowy virtualenv i uruchom:
Pip i automatycznie pobrać i zainstalować wszystkie moduły Pythona wymienione w requirements.txt pliku, bez względu na wersje, które określono!
źródło
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:źródło
virtualenv-clone
po aktywacji virtualenvvirtualenvwrapper
udostępnia polecenie duplikowania virtualenvźródło
Jeśli używasz Anacondy , możesz po prostu uruchomić:
Spowoduje to skopiowanie
myenv
do nowo utworzonego środowiska o nazwiemyclone
.źródło
Najłatwiejszą opcją jest użycie
virtualenv-clone
pakietu.Aby zduplikować
venv1
wvenv2
, wykonaj następujące kroki:Zainstaluj
virtualenv-clone
wvenv1
fikcyjnym środowisku wirtualnymvenv_dummy
. Aby stworzyćvenv_dummy
:Aby zainstalować
virtualenv-clone
:Aby powielić
venv1
dovenv2
:źródło
bin/activate
jeśli zastosujesz się do tej odpowiedzi. Dlaczego musisz edytowaćbin/activate
?bin/activate
Czy nie możesz po prostu:
źródło