Jaki jest właściwy sposób instalowania pip, virtualenv i dystrybucji dla Pythona?

247

Krótkie pytanie

tło

W mojej odpowiedzi na SO pytanie 4314376 zaleciłem użycie ez_setup, abyś mógł następnie zainstalować pipi wykonaćvirtualenv następujące czynności:

curl -O http://peak.telecommunity.com/dist/ez_setup.py
sudo python ez_setup.py
sudo easy_install pip
sudo pip install virtualenv

Pierwotnie wyciągnąłem te instrukcje z postu na blogu Jesse Nollera. Więc chcesz używać Pythona na komputerze Mac? . Podoba mi się pomysł utrzymania czystego globalnego katalogu pakietów stron, więc jedyne inne pakiety, które tam instaluję, to virtualenvwrapperi distribute. (Ostatnio dodałem distributedo mojego zestawu narzędzi z powodu tego ogłoszenia usługi publicznej w języku Python . Aby zainstalować te dwa pakiety, użyłem:

sudo pip install virtualenvwrapper
curl -O http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py

Nigdy więcej setuptools i easy_install

Aby naprawdę postępować zgodnie z tym ogłoszeniem usługi publicznej w języku Python , podczas nowej instalacji języka Python wykonałbym następujące czynności:

curl -O http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py
sudo easy_install pip
sudo pip install virtualenv
sudo pip install virtualenvwrapper

Upomnienie Glypha

W komentarzu do mojej odpowiedzi na SO pytanie 4314376 użytkownik SO SO Glif stwierdził:

NIE. NIGDY NIGDY nie rób sudo python setup.py installniczego. Napisz ~ / .pydistutils.cfg, który umieści instalację pip w ~ / .local lub coś takiego. Zwłaszcza pliki o nazwie ez_setup.pymają tendencję do zasysania nowszych wersji rzeczy, takich jak setuptools i easy_install, które mogą potencjalnie uszkodzić inne elementy systemu operacyjnego.

Powrót do krótkiego pytania

Tak więc odpowiedź Glifa prowadzi mnie do mojego pierwotnego pytania:

Matthew Rankin
źródło
Matthew, wiem, że ten wątek jest raczej stary. Ale czy jest coś nowego na tym froncie? Czy to nadal jest zły pomysł, aby zrobić python distribute_setup.pynastępnie easy_install pipi virtualenv --distribute venv? (patrz python-guide.readthedocs.org/en/latest/starting/install/… ), a jeśli tak, to dlaczego?
Amelio Vazquez-Reina
2
Co jest nie tak z sudo apt-get install python-{pip,virtualenv}???
MestreLion,
1
Tak, ogólnie rzecz biorąc, starsze, ale kompatybilne pakiety są w porządku, gdy pomniejsze wersje nie mają znaczenia dla twoich celów, ale konkretnie zapytałeś „co jest nie tak z”, a ja próbuję zdobyć moją pedantyczną odznakę.
2
FYI, kilka linków w tej kwestii są obecnie nieaktualne / uszkodzony - Obecnie (nie) zobaczyć te do pip, virtualenvi Python PSA.
Chris Sprague,
1
http://python-distribute.org/distribute_setup.pyprzekierowuje do 404 :(
jitter

Odpowiedzi:

173

Możesz to zrobić bez instalowania czegokolwiek w samym pythonie.

Nie potrzebujesz sudo ani żadnych przywilejów.

Nie musisz edytować żadnych plików.

Zainstaluj virtualenv w środowisku wirtualnym bootstrap. Użyj tego wirtualnego środowiska, aby stworzyć więcej. Ponieważ virtualenv jest dostarczany z pipem i dystrybucją, wszystko dostajesz z jednej instalacji.

  1. Pobierz virtualenv:
  2. Rozpakuj źródłowy plik archiwum
  3. Użyj rozpakowanego archiwum tar, aby stworzyć czyste środowisko wirtualne. To wirtualne środowisko będzie używane do „bootstrapowania” innych. Wszystkie środowiska wirtualne będą automatycznie zawierać pip i rozpowszechniać.
  4. Korzystając z pip, zainstaluj virtualenv w tym środowisku bootstrap.
  5. Użyj tego środowiska bootstrap, aby stworzyć więcej!

Oto przykład w bash:

# Select current version of virtualenv:
VERSION=12.0.7
# Name your first "bootstrap" environment:
INITIAL_ENV=bootstrap
# Set to whatever python interpreter you want for your first environment:
PYTHON=$(which python)
URL_BASE=https://pypi.python.org/packages/source/v/virtualenv

# --- Real work starts here ---
curl -O $URL_BASE/virtualenv-$VERSION.tar.gz
tar xzf virtualenv-$VERSION.tar.gz
# Create the first "bootstrap" environment.
$PYTHON virtualenv-$VERSION/virtualenv.py $INITIAL_ENV
# Don't need this anymore.
rm -rf virtualenv-$VERSION
# Install virtualenv into the environment.
$INITIAL_ENV/bin/pip install virtualenv-$VERSION.tar.gz

Teraz możesz użyć środowiska „bootstrap”, aby stworzyć więcej:

# Create a second environment from the first:
$INITIAL_ENV/bin/virtualenv py-env1
# Create more:
$INITIAL_ENV/bin/virtualenv py-env2

Oszalej!

Uwaga

Zakłada się, że nie używasz naprawdę starej wersji virtualenv. Stare wersje wymagały flag --no-site-packges(i zależnie od wersji Pythona --distribute). Teraz możesz stworzyć swoje środowisko ładujące za pomocą python virtualenv.py path-to-bootstraplub python3 virtualenv.py path-to-bootstrap.

Walker Hale IV
źródło
13
Nużące tylko dlatego, że jest bardzo ogólne, proste pobieranie, rozpakuj, a następnie python virtualenv.py TARGET_DIRECTORYrobi to samo.
Sebastian Blask,
3
To jest genialne. Dostosowałem go, aby odpowiedzieć na moje bardziej szczegółowe pytanie dotyczące instalacji virtualenv w wielu wersjach Pythona niezależnie od pakietów systemowych - stackoverflow.com/questions/6812207/… - działa idealnie.
david.libremone
6
Uwaga: bieżące virtualenvnie wymagają opcji „--no-site-packages --distribute”. Wymagane --system-site-packagesmoże być coś przeciwnego
jfs
1
Możesz uzyskać najnowszy stabilny plik archiwalny za pomocą tego polecenia:curl -Lo virtualenv-tmp.tar.gz 'https://github.com/pypa/virtualenv/tarball/master'
Bohr
1
Gdzie instalujesz virtualenvwrapper? Dokumenty ostrzegają szczególnie, aby nie instalować go w virtualenv (choć wydaje się, że działa ).
Aryeh Leib Taurog
21

Myślę, że Glif oznacza coś takiego:

  1. Utwórz katalog ~/.local, jeśli jeszcze nie istnieje.
  2. W twojej ~/.bashrcupewnić się, że ~/.local/binjest PATHi że ~/.localjest on PYTHONPATH.
  3. Utwórz plik, ~/.pydistutils.cfgktóry zawiera

    [install]
    prefix=~/.local

    Jest to standardowy plik w formacie ConfigParser.

  4. Pobierz distribute_setup.py i uruchom python distribute_setup.py(nie sudo). Jeśli narzeka na nieistniejącesite-packages katalog, utwórz go ręcznie:

    mkdir -p ~ / .local / lib / python2.7 / site-packages /

  5. Uruchom, which easy_installaby sprawdzić, czy pochodzi~/.local/bin

  6. Biegać pip install virtualenv
  7. Biegać pip install virtualenvwrapper
  8. Załóżmy, że utworzono wirtualny env zawierający folder ~/.virtualenvs
  9. W ~/.bashrcdodatku

    export WORKON_HOME
    source ~/.local/bin/virtualenvwrapper.sh

To wszystko, nie ma żadnego zastosowania, sudoa twoje środowisko Python jest ~/.localcałkowicie oddzielone od Pythona w systemie operacyjnym. Oświadczenie: Nie jestem pewien, jak kompatybilny virtualenvwrapperjest w tym scenariuszu - nie mogłem go przetestować na moim systemie :-)

Vinay Sajip
źródło
2
Czy ~ / .local to trochę głupie imię? Co jeśli Ruby chce zrobić to samo? Może ~ / .python27 byłoby lepsze?
Jonathan Hartley,
1
Tylko uwaga, właśnie wypróbowałem to samo w systemie Windows i musiałem dodać zarówno folder lokalny (na przykład „lokalny”), jak i „local \ Lib \ site-packages” do PYTHONPATH, aby pomyślnie uruchomić plik distribute_setup.py.
technomalogiczny
1
Ostatni problem z tym podejściem: virtualenv jest niezgodny z użyciem pliku .pydistutils.cfg. Zobacz github.com/pypa/virtualenv/issues/88
Dan
3
Myślę, że powinna istnieć easy_install pip
przerwa
5
~ / .Local pochodzi od PEP 370.
Éric Araujo
16

Jeśli wykonasz kroki wskazane w kilku samouczkach, które podłączyłem w tej odpowiedzi , możesz uzyskać pożądany efekt bez nieco skomplikowanych kroków „manualnych” w odpowiedziach Walkera i Vinaya. Jeśli korzystasz z systemu Ubuntu:

sudo apt-get install python-pip python-dev

Odpowiednik osiąga się w OS X za pomocą homebrew do zainstalowania Pythona (więcej szczegółów tutaj ).

brew install python

Po pipzainstalowaniu możesz użyć go, aby uzyskać pozostałe pakiety (możesz pominąć sudow OS X, ponieważ używasz lokalnej instalacji Pythona).

sudo pip install virtualenvwrapper

(są to jedyne pakiety, które musisz zainstalować na całym świecie i wątpię, aby kolidowały z jakimkolwiek systemem na poziomie systemu. Jeśli chcesz być super bezpieczny, możesz zachować wersje dystrybucji sudo apt-get install virtualenvwrapper)

Uwaga: w Ubuntu 14.04 pojawiają się błędy podczas instalacji pip , więc używam pip3 install virtualenv virtualenvwrapperi dodam VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3do mojego .bashrc/.zshrcpliku.

Następnie dołączasz do swojego .bashrcpliku

export WORKON_HOME
source /usr/local/bin/virtualenvwrapper.sh

i zrób to

. ~/.bashrc

To jest w zasadzie to. Teraz jedyną decyzją jest to, czy chcesz utworzyć virtualenv w celu uwzględnienia pakietów na poziomie systemu

mkvirtualenv --system-site-packages foo

tam gdzie nie trzeba ponownie instalować istniejących pakietów systemowych, są one dowiązane symbolicznie do wersji interpretera systemu. Uwaga: wciąż możesz instalować nowe pakiety i aktualizować istniejące pakiety zawarte w systemie bez sudo - przetestowałem go i działa bez żadnych zakłóceń interpretera systemu.

kermit@hocus-pocus:~$ sudo apt-get install python-pandas
kermit@hocus-pocus:~$ mkvirtualenv --system-site-packages s
(s)kermit@hocus-pocus:~$ pip install --upgrade pandas
(s)kermit@hocus-pocus:~$ python -c "import pandas; print(pandas.__version__)"
0.10.1
(s)kermit@hocus-pocus:~$ deactivate
kermit@hocus-pocus:~$ python -c "import pandas; print(pandas.__version__)"
0.8.0

Alternatywą jest, jeśli chcesz całkowicie oddzielić środowisko

mkvirtualenv --no-site-packages bar

lub biorąc pod uwagę, że jest to opcja domyślna, po prostu

mkvirtualenv bar

W rezultacie masz nową wirtualną wersję, w której możesz swobodnie i bezzwłocznie instalować swoje ulubione pakiety

pip install flask
metakermit
źródło
Czy to nie instaluje zarówno setuptools, jak i rozpowszechnia? I czy to nie psuje pakietów takich jak Tkinter i pyopencl, które nie lubią setuptools?
płyty kuchenne
Czy ustawienie WORKON_HOME na null w bashrc zmusza venvwrapper do użycia czegoś rozsądnego, na przykład export WORKON_HOME="$HOME/.virtualenvs"?
płyty kuchenne
Cóż, instaluje to, co mówi twój menedżer pakietów, od którego zależy pip. Obecnie jest to setuptools w Ubuntu i OS X ( brew install pythonwciąga pip + setuptools). To podejście działa dla mnie dobrze. Ponadto skupienie się na pipie wydaje się być również przyszłym rozwiązaniem w zakresie pakietów Pythona.
metakermit
1
WORKON_HOMEdomyślnie ~/.virtualenvstak. W /usr/local/bin/virtualenvwrapper.shtych zestawach jest linia workon_home_dir="$HOME/.virtualenvs" if [ "$workon_home_dir" = "" ].
metakermit
Rozumiem. Dzięki. Twoje proste podejście świetnie działało dla mnie na Ubuntu 12.04 podczas instalowania przez pip modułów, które są wybredne w używaniu dystrybucji (pyopencl). Sztuczka dla mnie polegała na podążaniu za twoją pip install virtualenv virtualenv-wrapperlinią za pip install --upgrade distributepomocą aktywowanego virtualenv, w którym następnie zainstalowałem pyopencl. Dodałem również export PROJECT_HOME="$HOME/src"do mojego bashrc, aby włączyć fajne mkprojectnarzędzie venv.
płyty kuchenne
12

Python 3.4 i nowsze

Python 3.3 dodaje moduł venv , a Python 3.4 dodaje moduł surepip . Dzięki temu pip ładujący jest tak prosty, jak:

python -m surepip

Być może poprzedza to wezwanie venvdo zrobienia tego w środowisku wirtualnym.

Gwarantowana pipsa jest opisana w PEP 453 .

gerrit
źródło
10

W systemie Ubuntu:

sudo apt-get install python-virtualenv

Pakiet python-pipjest zależny, więc zostanie również zainstalowany.

Arik Halperin
źródło
1
python-virtualenv zainstaluje zarówno virtualenv, jak i pip. Następnie uruchom virtualenv, aby utworzyć środowiska wirtualne Python. I uruchom pip z poziomu wirtualnego środowiska env, aby zainstalować inne pakiety.
jemeshsu
2
To rzeczywiście najczystsza opcja. „właściwym” sposobem instalowania rzeczy w systemie operacyjnym jest użycie systemu instalatora systemu operacyjnego ! Następnie możesz grać pip, najlepiej w virtualenv, i nigdy nie używać sudożadnego z nich
MestreLion
Niestety, wersje dostarczone przez system operacyjny pipczasami zawierają znaczące błędy, więc często używam get-pip.pypodanego na python.org.
RichVel,
@RichVel czy możesz opracować istotne napotkane błędy?
danielpops
1
@danielpops - jednym z przykładów jest ten problem z pipem w systemie Ubuntu 16.04.1, ale mogą występować inne problemy z niektórymi wersjami i przypadkami użycia.
RichVel
5

Zrobiłem tę procedurę, abyśmy mogli z niej korzystać w pracy.

cd ~
curl -s https://pypi.python.org/packages/source/p/pip/pip-1.3.1.tar.gz | tar xvz
cd pip-1.3.1
python setup.py install --user
cd ~
rm -rf pip-1.3.1

$HOME/.local/bin/pip install --user --upgrade pip distribute virtualenvwrapper

# Might want these three in your .bashrc
export PATH=$PATH:$HOME/.local/bin
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS="--distribute"
source $HOME/.local/bin/virtualenvwrapper.sh

mkvirtualenv mypy
workon mypy
pip install --upgrade distribute
pip install pudb # Or whatever other nice package you might want.

Kluczowe kwestie dla bezpieczeństwa:

  1. curl sprawdza poprawność ssl. wget nie.
  2. Począwszy od pip 1.3.1, pip wykonuje również sprawdzanie poprawności ssl.
  3. Mniej użytkowników może przesłać archiwum pypi niż archiwum github.
bukzor
źródło
5

Aktualizacja: od lipca 2013 r. Projekt nie jest już obsługiwany. Autor sugeruje użycie pyenv . (pyenv nie ma wbudowanego wsparcia dla virtualenv, ale dobrze się z nim gra).

Pythonbrew to menedżer wersji dla Pythona i jest wyposażony w obsługę virtualenv.

Po zainstalowaniu Pythonbrew i wersji Pythona przy użyciu venvs jest naprawdę łatwe:

# Initializes the virtualenv 
pythonbrew venv init

# Create a virtual/sandboxed environment 
pythonbrew venv create mycoolbundle  

# Use it 
pythonbrew venv use mycoolbundle
kioopi
źródło
@ kermit666 dzięki. Jaki byłby preferowany sposób oznaczenia mojej odpowiedzi jako nieaktualnej? Usunąć to?
kioopi,
1
cóż, możesz albo zostawić ją taką, jaka jest (istnieją instrukcje dotyczące używania pyenv dla osób, które podążają za linkiem z mojego komentarza, które są podobne do pythonbrew, które poleciłeś) lub lepiej jeszcze edytować odpowiedź, np. Aktualizacja września 2013 r. przez dołączając nowe instrukcje. Być może pythonbrew znów stanie się aktywny w przyszłości, więc nie usunę twoich starych instrukcji. Aby uzyskać więcej informacji, zobacz meta .
metakermit
Zobacz moją odpowiedź na temat pyenv, która działa dobrze.
RichVel
3

Nie ma problemu z instalacją sudo python setup.py, jeśli jesteś pewien, że chcesz to zrobić.

Różnica polega na tym, że użyje katalogu pakietów witryny w systemie operacyjnym jako miejsca docelowego kopiowania plików .py.

więc jeśli chcesz, aby pip był dostępny w szerokim zakresie, prawdopodobnie jest to właściwy sposób. Nie twierdzę, że inne sposoby są złe, ale prawdopodobnie jest to dość sprawiedliwe.

Alexis Métaireau
źródło
1
Tak, użyłem tego w ten sposób. A jakiś czas później wywołanie pip freezeprawie mnie zamroziło - lista pakietów instalowanych w systemie była zdecydowanie za długa. Od tego czasu zdecydowanie zalecam instalowanie pakietu python „no sudo” i „no os-wide”.
Jan Vlcinsky
2

Ostatnio spotkałem ten sam problem. Staję się bardziej stronniczy w sposobie myślenia „zawsze używaj virtualenv”, więc moim problemem było zainstalowanie virtualenv z pipem bez instalowania dystrybucji do mojego globalnego katalogu lub pakietów stron użytkownika. Aby to zrobić, ręcznie pobrałem distribute, pip i virtualenv, i dla każdego uruchomiłem „python setup.py install --prefix ~ / .local / python-private” (z tymczasowym ustawieniem PYTHONPATH = ~ / .local / python-private), aby skrypty instalacyjne mogły znaleźć dystrybucję). Przeniosłem skrypt virtualenv do innego katalogu, który mam na PATH i poddałem go edycji, tak aby moduły dystrybucji i virtualenv można było znaleźć na sys.path. Tada: Nie zainstalowałem niczego w katalogu / usr, / usr / local ani w moich pakietach witryn użytkownika, ale mogę uruchomić virtualenv w dowolnym miejscu, aw tym virtualenv dostaję pip.

Éric Araujo
źródło
2

Miałem różne problemy (patrz poniżej) instalowania zaktualizowanych modułów SSL, nawet wewnątrz virtualenv, na starszych wersjach języka Python dostarczonych przez system operacyjny, więc teraz używam pyenv.

pyenv ułatwia instalację nowych wersji Pythona i obsługuje virtualenvs. Rozpoczęcie pracy jest znacznie łatwiejsze niż przepisy na virtualenv wymienione w innych odpowiedziach:

  • Na Macu wpisz brew install pyenvi na Linuksie użyj instalatora pyenv
  • dzięki temu masz wbudowaną obsługę virtualenv, a także przełączanie wersji Pythona (w razie potrzeby)
  • działa dobrze z Python 2 lub 3, może mieć zainstalowanych wiele wersji jednocześnie

Działa to bardzo dobrze, aby odizolować wersję „nowego Pythona” i virtualenv od systemowego Pythona. Ponieważ możesz z łatwością korzystać z nowszego Pythona (post 2.7.9), moduły SSL są już uaktualnione i, oczywiście, jak każda nowoczesna konfiguracja virtualenv, jesteś izolowany od systemowych modułów Python.

Kilka fajnych samouczków:

pyenv-virtualenvWtyczka jest teraz wbudowany - rodzaj pyenv commands | grep virtualenvsprawdzenia. Na początek nie użyłbym wtyczki pyenv-virtualenvwrapper - zobacz, jak radzisz sobie z pyenv-virtualenv, który jest bardziej zintegrowany z pyenv, ponieważ obejmuje on większość tego, co robi virtualenvwrapper.

pyenvjest wzorowany na rbenv(dobre narzędzie do przełączania wersji Ruby), a jego jedyną zależnością jest bash.

  • pyenv nie jest związany z bardzo podobnie nazwaną pyvenv- jest to odpowiednik virtualenv, który jest częścią ostatnich wersji Python 3 i nie obsługuje przełączania wersji Python

Ostrzeżenia

Dwa ostrzeżenia o pyenv:

  1. Działa tylko z powłoki bash lub podobnej - a ściślej mówiąc, wtyczka pyenv-virtualenv nie lubi dash, która jest dostępna /bin/shna Ubuntu lub Debianie.
  2. Musi być uruchamiany z interaktywnej powłoki logowania (np. Za bash --loginpomocą terminala), co nie zawsze jest łatwe do osiągnięcia dzięki narzędziom do automatyzacji, takim jak Ansible .

Dlatego pyenv jest najlepszy do użytku interaktywnego, a mniej dobry do serwerów skryptowych.

Problemy z modułem SSL

Jednym z powodów, dla których warto skorzystać, pyenvjest to, że często występują problemy z aktualizacją modułów SSL Pythona podczas korzystania ze starszych wersji Python dostarczonych przez system:

RichVel
źródło
2
  • Możesz to zrobić bez instalowania czegokolwiek w samym pythonie.

  • Nie potrzebujesz sudo ani żadnych przywilejów.

  • Nie musisz znajdować najnowszej wersji virtualenvpliku tar

  • Nie musisz edytować informacji o wersji w skrypcie bash, aby zachować aktualność.

  • Nie musisz curl/ wgetlub tarinstalowane, ani pipczyeasy_install

  • działa to zarówno w wersji 2.7, jak i 3.X

Zapisz następujące dane w /tmp/initvenv.py:

z przyszłego importu funkcja print_funkcja

import os, sys, shutil, tempfile, subprocess, tarfile, hashlib

try:
    from urllib2 import urlopen
except ImportError:
    from urllib.request import urlopen

tmp_dir = tempfile.mkdtemp(prefix='initvenv_')
try:
    # read the latest version from PyPI
    f = urlopen("https://pypi.python.org/pypi/virtualenv/")
    # retrieve the .tar.gz file
    tar_found = False
    url = None
    sha256 = None
    for line in f.read().splitlines():
        if isinstance(line, bytes):
            line = line.decode('utf-8')
        if tar_found:
            if 'sha256' in line:
                sha256 = line.split('data-clipboard-text')[1].split('"')[1]
                break
            continue
        if not tar_found and 'tar.gz">' not in line:
            continue
        tar_found = True
        for url in line.split('"'):
            if url.startswith('https'):
                break
    else:
        print('tar.gz not found')
        sys.exit(1)
    file_name = url.rsplit('/', 1)[1]
    print(file_name)
    os.chdir(tmp_dir)
    data = urlopen(url).read()
    data_sha256 = hashlib.sha256(data).hexdigest()
    if sha256 != data_sha256:
        print('sha256 not correct')
        print(sha256)
        print(data_sha256)
        sys.exit(1)
    with open(file_name, 'wb') as fp:
        fp.write(data)
    tar = tarfile.open(file_name)
    tar.extractall()
    tar.close()
    os.chdir(file_name.replace('.tar.gz', ''))
    print(subprocess.check_output([sys.executable, 'virtualenv.py'] +
                                  [sys.argv[1]]).decode('utf-8'), end='')
    if len(sys.argv) > 2:
        print(subprocess.check_output([
            os.path.join(sys.argv[1], 'bin', 'pip'), 'install', 'virtualenv'] +

            sys.argv[2:]).decode('utf-8'), end='')
except:
    raise
finally:
    shutil.rmtree(tmp_dir)  # always clean up

i użyj go jako

python_binary_to_use_in_venv /tmp/initvenv.py your_venv_name [optional packages]

np. (jeśli naprawdę potrzebujesz distributewarstwy zgodności setuptools)

python /tmp/initvenv.py venv distribute

Pamiętaj, że w starszych wersjach Pythona może to dać ci InsecurePlatformWarnings¹.

Gdy masz już virtualenv (nazwa np. venv), Możesz skonfigurować innego virtualenv, używając virtualenvwłaśnie zainstalowanej:

venv/bin/virtualenv venv2

virtualenvwrapper

Polecam również przyjrzeć się virtualenvwrapper , po jednorazowej konfiguracji:

% /opt/python/2.7.10/bin/python /tmp/initvenv.py venv virtualenvwrapper

i aktywacja (można to zrobić za pomocą skryptu logowania):

% source venv/bin/virtualenvwrapper.sh

możesz robić takie rzeczy jak:

% mktmpenv 
New python executable in tmp-17bdc3054a46b2b/bin/python
Installing setuptools, pip, wheel...done.
This is a temporary environment. It will be deleted when you run 'deactivate'.
(tmp-17bdc3054a46b2b)% 

¹ Nie znalazłem sposobu na stłumienie ostrzeżenia. Można to rozwiązać w pipi / lub request, ale programiści wskazują na siebie jako przyczynę. Otrzymałem często nierealistyczne zalecenie uaktualnienia używanej wersji Pythona do najnowszej wersji. Jestem pewien, że to zepsuje np. Moją instalację Linux Mint 17. Na szczęście pipbuforuje pakiety, więc Ostrzeżenie jest tworzone tylko raz na instalację pakietu.

Anthon
źródło
Ostrzeżenie InsecurePlatformWarning(tj. Ostrzeżenie, jeśli Python jest starszy niż wersja 2.7.9) można naprawić, instalując dodatkowe pakiety pyopenssl, pyasn1, ndg-httpsclient z PyPI. (Jest to obsługa SSL, dekodowanie certyfikatów, https przez PyOpenSSL.) Bez odpowiednich protokołów naprawdę nie jest wystarczająco bezpieczny, aby pobrać i uruchomić dowolny kod.
hynekcer
@hynekcer Spróbuję. Zadaję sobie pytanie, dlaczego pip i / lub żądanie nie są uzależnione od tych pakietów dla odpowiednich (starszych) wersji Pythona.
Anthon
0

Dobre instrukcje znajdują się na oficjalnej stronie Virtualenv. https://pypi.python.org/pypi/virtualenv

Zasadniczo to, co zrobiłem, to instalacja za pippomocą sudo easy_install pip, a następnie użycie, a sudo pip install virtualenvnastępnie utworzenie środowiska za pomocą: virtualenv my_env(nazwij to, co chcesz), zgodnie z tym, co zrobiłem virtualenv --distribute my_env:; które zainstalowałem distributei pipna moim virtualenv.

Ponownie postępuj zgodnie z instrukcjami na virtualenvstronie.

Niby kłopot, pochodzący z Ruby; P

Victor S.
źródło
0

Oto dobry sposób na zainstalowanie virtualenvwrapper (aktualizacja tego ).

Pobierz virtualenv-1.11.4 (najnowsze można znaleźć tutaj ), Rozpakuj, otwórzterminal

# Create a bootstrapenv and activate it:
$ cd ~
$ python <path to unzipped folder>/virtualenv.py bootstrapenv
$ source bootstrapenv/bin/activate

# Install virtualenvwrapper:
$ pip install virtualenvwrapper
$ mkdir -p ~/bootstrapenv/Envs

# append it to file `.bashrc`
$ vi ~/.bashrc
  source ~/bootstrapenv/bin/activate
  export WORKON_HOME=~/bootstrapenv/Envs
  source ~/bootstrapenv/bin/virtualenvwrapper.sh

# run it now.
$ source ~/.bashrc

To jest to, teraz możesz użyć mkvirtualenv env1, lsvirtualenvitp

Uwaga: możesz usunąć virtualenv-1.11.4i virtualenv-1.11.4.zipz folderów pobranych.

suhailvs
źródło
0

Dobrą wiadomością jest to, że jeśli zainstalowałeś Python3.4, pyvenv jest już zainstalowany. Więc tylko

pyvenv project_dir
source project_dir/bin/activate
python --version   
python 3.4.*

Teraz w tej wirtualnej środowisku możesz użyć pip do zainstalowania modułów dla tego projektu.

Zostaw to wirtualne środowisko

deactivate
maoyang
źródło