2013-01-12 15 views
68

Wygląda na to, że nagle zaczęto napotkać błąd error: option --single-version-externally-managed not recognized, gdy pip install pakiety zmian (w tym PyObjC i astropy). Nigdy wcześniej nie widziałem tego błędu, ale teraz pojawia się również na kompilacjach Travis-ci, dla których nic się nie zmieniło.Co oznacza "błąd: opcja - pojedyncza-wersja-zewnętrznie zarządzana nierozpoznana"?

Czy ten błąd wskazuje na nieaktualną dystrybucję? Lub niektóre nieprawidłowo określone opcje w setup.py? Lub coś zupełnie innego?

Odpowiedz

31

New Update:

zainstalować najnowszą wersję setuptools. Jeśli nadal występuje błąd, zainstaluj także wheel.

pip install -U setuptools 
pip install -U wheel 

oryginalne odbierania/Więcej szczegółów:

--single-version-externally-managed jest opcją stosowany do pakietów Pythona instruowania moduł setuptools aby utworzyć pakiet Pythona, który może być łatwo zarządzany przez menedżera pakietów gospodarza, jeżeli potrzebne, takie jak Yum lub Apt.

Jeśli widzisz ten komunikat, możesz mieć starszą wersję setuptools lub Python. Spróbuj użyć narzędzia Dystrybucja, które jest nowszą wersją narzędzi setupto i jest kompatybilne wstecznie. Te pakiety mogą oczekiwać, że już je masz.

https://pypi.python.org/pypi/distribute

Edit: W tym momencie, rozpowszechnianie zostało włączone do głównego setuptools projektu. Wystarczy zainstalować najnowszą wersję setuptools. Jak wskazano przez @wynemo, możesz chcieć użyć opcji --egg, ponieważ jest bardziej odpowiednia dla osób wykonujących ręczne instalacje, w których nie zamierzasz tworzyć pakietu systemowego do dystrybucji.

+1

Czy możesz dodać wersję, która się pojawiła? Używam setuptools 0.6, a pip nie wie o nowszej wersji. 'distribute' brzmi poprawnie, ale nie mogę go zaimportować ... – keflavich

+0

Nie" importuj dystrybucji ". Dystrybucja jest zamiennikiem typu drop-in i ma tę samą nazwę modułu. Do tego również potrzebne jest 'import setuptools'. – Kelketek

+0

W takim razie należy się upewnić, że setuptools nie nadpisuje dystrybucji, jeśli oba są zainstalowane. Powinieneś zainstalować dystrybucję za pomocą pip, a następnie usunąć setuptools. Wyobrażam sobie, że to powinno zadziałać. – Kelketek

132

Dodaj --egg opcję

pip install --egg SCons 

używam wersji 1.4.1 pip

+9

To było jedyne rozwiązanie, które faktycznie pomogło. Najnowsze narzędzia pip i setup zostały już zainstalowane, niemniej jednak popełniam ten błąd. – Michael

+0

Miałem ten problem z pyenv i to naprawiło. – glaucon

+9

Czy ktoś może wyjaśnić szczegółowo, co oznacza ta opcja i dlaczego to działa? –

0

mam ten problem na moim MacBooku również przy próbie uaktualnienia jeden pakiet Pythona. Sprawdzam wersję pip w systemie OS X, jest zbyt stary: 1.1. używam cmd wykonać, aby uaktualnić pip do 1.5.6

easy_install -U pip 

Wtedy ten błąd jest stała.

+0

Otrzymuję ten błąd nawet w wersji 1.5.6 ... – Cerin

6

spróbuj uaktualnić setuptools takie jak ten:

pip install --upgrade setuptools

37

Instalowanie wheel rozwiązać ten problem z ostatnimi pip (użyłem 8.1.2):

pip install wheel 
+0

Możesz powrócić do edycji, jeśli chcesz, nie ma problemu. Jeśli znasz dokładną wersję 'pip' i' wheel', gdzie została ona naprawiona, warto o tym wspomnieć na wypadek, gdyby została ona ponownie złamana. Odpowiedź również nie wyjaśnia, co się dzieje. –

+1

To działało również dla mnie (ja też mam ppt 8.1.2). –

+0

To plus odpowiedź z @sparrowt poprawił mój problem –

3

miałem tego problemu. Okazało się, że był to problem z uprawnieniami do plików w mojej pamięci podręcznej pip.

Jeśli pojawi się komunikat na samym początku swojej produkcji pip jak

The directory '/home/ubuntu/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. 
The directory '/home/ubuntu/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. 

może mieć ten sam problem. Możesz go rozwiązać, upewniając się, że masz odpowiednie uprawnienia do plików w pamięci podręcznej pip (coś w stylu chown -R $(whoami) /home/ubuntu/.cache/pip) lub, jeśli korzystasz z systemu UNIX, możesz ustawić lokalizację pamięci podręcznej pip z XDG_CACHE_HOME env var do jakiegoś folderu, który posiadasz .

+0

Zadziwiająco, zadziałało też dla mnie (jeśli użyjesz 'sudo' do zainstalowania pakietu, upewnij się, że dodasz flagę' -H') ! Naprawdę nie widzę, jakie jest połączenie między pamięcią podręczną a błędem opcji poleceń, ale nieważne. – Delgan