2013-05-31 11 views
9

Kiedy próbuje zainstalować virtualenv użyciu parzonej Python, pojawia się następujący błąd:Nie można zainstalować virtualenv PIP w OS X 10.8 z parzonej python 2.7

$ pip install virtualenv 
Requirement already satisfied (use --upgrade to upgrade): \ 
    virtualenv in /Library/Python/2.7/site-packages/virtualenv-1.9.1-py2.7.egg 
Cleaning up... 

Tak wyraźnie PIP jest jakoś patrząc pytona systemu folder zamiast zaparzonego w/usr/local. Jak mogę tego uniknąć?

Lekarz piwowarski nie znajduje żadnych problemów, a priorytet ścieżki jest ustawiony w porządku.

Próbowałem usunąć pakiet virtualenv z pytonu systemowego, , dzięki czemu mogłem zainstalować virtualenv z zaparzonym pip. Ale potem nie mógł utworzyć virtualenvs, jak mam ten błąd:

$ virtualenv datatransfer/ 
Traceback (most recent call last): 
    File "/usr/local/bin/virtualenv", line 5, in <module> 
    from pkg_resources import load_entry_point 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 2603, in <module> 
    working_set.require(__requires__) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 666, in require 
    needed = self.resolve(parse_requirements(requirements)) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 565, in resolve 
    raise DistributionNotFound(req) # XXX put more info here 
pkg_resources.DistributionNotFound: virtualenv==1.9.1 

Więc nie udało się uniknąć virtualenv systemu.

Co robię źle?

+0

Spójrz na tę stronę wiki: https://github.com/mxcl/homebrew/wiki/Homebrew-and-Python. Wyjaśnia, jak edytować PYTHONPATH i PATH, aby system najpierw znalazł zaparzonego Pythona. – SethMMorton

+0

@SethMMorton PATH jest już poprawna, a PYTHONPATH jest pusta. To, co widzę na tej wiki, to to, że parzony pyton również szuka modułów w /Library/Python/2.7/site-packages. Ale czy wirtualne pliki utworzone za pomocą polecenia systemowego w tym folderze będą używać zaparzonego pythona? – RogerFC

+0

co się stanie, gdy wpiszesz 'który python' i' który pip'? – SethMMorton

Odpowiedz

0

Okazało się, że w przeciwieństwie do ciebie, moje ścieżki były złe, według lekarza warzenia. Ale po poprawieniu, że nadal miałem problem (bez niespodzianek, biorąc pod uwagę twój opis), odinstalowałem virtualenv, a następnie ponownie, ale tym razem z sudo, sudo pip install virtualenv

Rozwiązało to problem, który oznacza, że ​​mam inny problem z konfiguracja systemu w ogóle lub osoba, która ma więcej niż jedną godzinę doświadczenia w Pythonie, będzie w stanie wskazać, dlaczego nie jest dobra (myślę, że jest to związane z instalacją globalną uważaną za złą praktykę).

Seth jest na coś z which wydaje widzisz to samo co ja,

~ which python skutkuje /usr/local/bin/python

~ ls -l /usr/local/bin/python daje mi _permissions_etc_ /usr/local/bin/python -> ../Cellar/python/2.7.5/bin/python

Pip

which pip wskazał /usr/local/bin/pip

ls -l /usr/local/bin/pip pokazuje _permissions_etc_ /usr/local/bin/pip -> ../Cellar/python/2.7.5/bin/pip

virtualenv (nie mam wyjścia przed sudo pip install)

which virtualenv jest /usr/local/bin/virtualenv

ls -l /usr/local/bin/virtualenv pokazuje _permissions_etc_ /usr/local/bin/virtualenv

Kiedy tworzone i użyć virtualenv I Uzyskaj następujące,

FWIW mój .zshrc ma następującą,

# Python related 
# http://hackercodex.com/guide/python-virtualenv-on-mac-osx-mountain-lion-10.8/ 
# http://docs.python-guide.org/en/latest/dev/virtualenvs.html 
source /usr/local/bin/virtualenvwrapper.sh 
# virtualenv should use Distribute instead of legacy setuptools 
export VIRTUALENV_DISTRIBUTE=true 
# Centralized location for new virtual environments 
export PIP_VIRTUALENV_BASE=$HOME/Projects/PythonVirtualEnv 
# cache pip-installed packages to avoid re-downloading 
export PIP_DOWNLOAD_CACHE=$HOME/.pip/cache 
1

Co naprawdę spowodowało problem i dla mnie była obecność .pydistutils.cfg w moim katalogu $HOME. To zmusiło mnie do użycia: sudo pip install <package>.

Jeśli kiedykolwiek będziesz musiał użyć sudo, aby zainstalować pakiet przez pip, robisz to źle i musisz natychmiast zacząć rozwiązywać problemy z systemem; w przeciwnym razie wszystko pójdzie nie tak i nie będziesz wiedział dlaczego.

Uruchamianie: brew doctor wyświetli ostrzeżenie o pliku .pydistutils.cfg, więc nie zapomnij monitorować stanu tego polecenia po wprowadzeniu podstawowych zmian w systemie.

Zajęło mi to trochę czasu, aby to sprawdzić, ale wszystko jest już dobrze. This really helped

19

miałem ten sam problem i udało mi się go rozwiązać przez odinstalowanie żadnych wersje zaparzania Python i virtualenv

brew uninstall python 
brew uninstall pyenv-virtualenv 

Ręczne przesuwanie wszystkich virtualenv pliki * znalazłem pod /usr/local/bin do innego folderu

sudo mkdir /usr/local/bin/venv-old 
sudo mv /usr/local/bin/virtualenv* /usr/local/bin/venv-old/ 

Otwieranie nowej zakładki terminala i podwójne sprawdzanie, czy jestem w stanie czystym

which python # => /usr/bin/python 
which virtualenv # => virtualenv not found 

i instalowania Python i virtualenv (owinięcie) czysto stosując zalecaną metodę (here i here)

brew install python --with-brewed-openssl 
# Open a new terminal tab now (to access /usr/local/bin/python) 
pip install virtualenv 
pip install virtualenvwrapper 
+0

Jest to najbardziej stabilne rozwiązanie, które znalazłem bez konieczności "sudo" ponownego instalowania czegokolwiek. Dziękuję Ci! – Geekfish

+0

Jeśli, tak jak w moim systemie, '/ usr/local/bin/virtualenv' nadal istnieje nawet po uruchomieniu' pip uninstall virtualenv', wydaje się, że możesz ręcznie usunąć '/ usr/local/bin/virtualenv', a następnie' pip install' dostarcza wersję virtualenv, która działa poprawnie. – npdoty

+0

Tak, dlatego zaproponowałem przeniesienie wszystkich rzeczy '/ usr/local/bin/virtualenv *' do nowego folderu. Nie lubię trwale usuwać niczego poza moim katalogiem domowym, ponieważ nigdy nie wiesz, jakie narzędzie systemowe może na tym polegać. – metakermit

1

że ten sam problem i okazało się rozwiązanie, w grupie Google. Wygląda na to, że katalog/usr/local/bin/virtualenv nie został zaktualizowany, więc jeśli go otworzysz, zobaczysz odniesienie do starego virtualenv 1.9.1, gdy nowsza wersja zostanie zainstalowana w twoim systemie.

więc wystarczy, aby otworzyć/usr/local/bin/virtualenv i zastąpić go:

#!/usr/local/bin/python 
# -*- coding: utf-8 -*- 
import re 
import sys 
from virtualenv import main 

if __name__ == '__main__': 
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) 
sys.exit(main()) 

A że pracował dla mnie!

Źródło: https://groups.google.com/forum/#!topic/python-virtualenv/hL_QDPJsnuY

+0

to działało dla mnie! rzeczywiście miałem tam bardzo stary skrypt virtualenv, który z jakiegoś powodu nie mógł zostać odinstalowany. – gabe

4

miałem ten sam problem,

dla mnie

sudo mv /usr/local/bin/virtualenv* /usr/local/bin/venv-old/

pip install -I virtualenv

Nie trzeba odinstalować i zainstalować Pythona.

+0

Wielkie dzięki, to zadziałało! – ademarizu

Powiązane problemy