2012-08-29 8 views
54

Jestem zdezorientowany, gdzie powinienem umieścić moje virtualenvs.Gdzie należy utworzyć virtualenvs?

Z moim pierwszym projektem django utworzyłem projekt za pomocą polecenia "django-admin.py startproject djangoproject".

Następnie zapisałem katalog djangoproject i uruchomiłem polecenie "virtualenv env", które utworzyło katalog środowiska wirtualnego na tym samym poziomie co wewnętrzny katalog "djangoproject".

Czy to niewłaściwe miejsce do utworzenia virtualenv dla tego konkretnego projektu?

Mam wrażenie, że większość ludzi zachowuje wszystkie swoje virtualenvs w zupełnie innym katalogu, np. ~/virtualenvs, a następnie użyj virtualenvwrapper, aby przełączać się między nimi.

Czy jest to właściwy sposób?

Odpowiedz

80

Wiele osób korzysta z narzędzia virtualenvwrapper, które przechowuje wszystkie virtualenvs w tym samym miejscu (katalog ~/.virtualenvs) i umożliwia tworzenie skrótów do ich tworzenia i przechowywania. Na przykład, można zrobić:

mkvirtualenv djangoproject 

a potem:

workon djangoproject 

To chyba zły pomysł, aby zachować katalog virtualenv w samym projekcie, ponieważ nie chcą go rozpowszechniać (może to być specyficzne dla twojego komputera lub systemu operacyjnego). Zamiast zachować plik requirements.txt użyciu pip:

pip freeze > requirements.txt 

i rozpowszechniać tego. Pozwoli to inni wykorzystujące swój projekt, aby ponownie zainstalować wszystkie te same wymagania w ich virtualenv z:

pip install -r requirements.txt 
+0

miło, że nigdy nie zaglądałem do rzeczy, ale jeśli będę potrzebował pewnego dnia, to przyda się –

+0

PIP jest bardzo popularny w społeczności Django i bardzo łatwy w użyciu. –

+0

Dzięki David, to coś, co myślałem. Wiedziałem o wymaganiach i robię to. Po prostu nie byłem pewien, gdzie powinien iść venv. Twoja opinia na temat tego, że jest specyficzna dla systemu operacyjnego, jest dobrym uzasadnieniem dla robienia tego, co sugerujesz. – William

4

ogólnie przyjętymi miejsce, aby je umieścić to samo miejsce, że domyślna instalacja virtualenvwrapper umieszcza je: ~/.virtualenvs

Powiązane: virtualenvwrapper jest doskonałym narzędziem, które dostarcza skróty do wspólnych poleceń virtualenv. http://www.doughellmann.com/projects/virtualenvwrapper/

10

Zmiana lokalizacji katalogu virtualenv łamie go

To jest główną zaletą umieszczenie katalogu poza repozytorium, na przykład drzewa pod ~/.virtualenvs z virutalenvwrapper.

W przeciwnym razie, jeśli pozostawisz je w drzewie projektu, przeniesienie lokalizacji projektu spowoduje przerwanie virtualenv.

Patrz: Renaming a virtualenv folder without breaking it

Jest --relocatable ale wiadomo nie być idealne.

Kolejna drobna zaleta: nie musisz tego robić pod .gitignore.

Gdyby nie to, po prostu zostawiłbym virtualenvs gitignored w drzewie projektu, aby zachować podobne elementy.

Jest to dobrze, ponieważ prawdopodobnie nigdy nie będzie można ponownie użyć danego virtualenv w projektach.

0

Jeśli używasz pyenv install Python, najlepiej będzie wykonać pyenv-virtualenv. Jeśli zostanie ustawiony plik .python-version, może automatycznie aktywować lub dezaktywować wirtualne środowisko po zmianie folderu roboczego. Pyenv-virtualenv również umieść wszystkie wirtualne env w folderze $HOME/.pyenv/versions.