Nie można znaleźć wersji spełniającej wymaganie <package>


139

Instaluję kilka pakietów Pythona w Ubuntu 12.04 przy użyciu następującego requirements.txtpliku:

numpy>=1.8.2,<2.0.0
matplotlib>=1.3.1,<2.0.0
scipy>=0.14.0,<1.0.0
astroML>=0.2,<1.0
scikit-learn>=0.14.1,<1.0.0
rpy2>=2.4.3,<3.0.0

i te dwa polecenia:

$ pip install --download=/tmp -r requirements.txt
$ pip install --user --no-index --find-links=/tmp -r requirements.txt

(pierwszy pobiera pakiety, a drugi je instaluje).

Proces jest często zatrzymywany z powodu błędu:

  Could not find a version that satisfies the requirement <package> (from matplotlib<2.0.0,>=1.3.1->-r requirements.txt (line 2)) (from versions: )
No matching distribution found for <package> (from matplotlib<2.0.0,>=1.3.1->-r requirements.txt (line 2))

które naprawiam ręcznie:

pip install --user <package>

a następnie ponownie uruchom drugie pip installpolecenie.

Ale to działa tylko dla tego konkretnego pakietu. Kiedy pip installponownie uruchomię drugie polecenie, proces zostaje zatrzymany, narzekając na inny wymagany pakiet i muszę go powtórzyć, tj .: ręcznie zainstalować nowy wymagany pakiet (powyższym poleceniem), a następnie uruchomić drugie pip installpolecenie.

Do tej pory miałem zainstalować ręcznie six, pytz, nose, a teraz narzekają potrzeby mock.

Czy istnieje sposób, pipaby automatycznie zainstalować wszystkie potrzebne zależności, aby nie musieć robić tego ręcznie jedna po drugiej?

Dodaj : dzieje się tak tylko w Ubuntu 12.04 BTW. W Ubuntu 14.04 pip installpolecenia zastosowane do requirements.txtpliku działają bez problemów.


1
Czasami twój projekt Django może zależeć od lokalnych pakietów brew. Sprawdź dokładnie, czy masz te zainstalowane!
James111

miałem ten sam problem, z `` python -m pip install flask '' mogłem go zainstalować
Freelancer

Odpowiedzi:


47

To podejście (posiadanie wszystkich zależności w katalogu i brak pobierania z indeksu) działa tylko wtedy, gdy katalog zawiera wszystkie pakiety. Katalog powinien zatem zawierać wszystkie zależności, lecz również wszystkie pakiety, które są uzależnione od tych zależności (np six, pytzitp).

Dlatego należy je dołączyć ręcznie requirements.txt(aby pierwszy krok jawnie je pobrać) lub zainstalować wszystkie pakiety przy użyciu PyPI, a następnie pip freeze > requirements.txtzapisać listę wszystkich potrzebnych pakietów.


Więc jedynym sposobem, aby dowiedzieć się, jakie są wszystkie wymagania, jest freezezainstalowanie pakietów w działającej konfiguracji, a następnie dodanie wszystkiego do requirements.txtpliku?
Gabriel

2
@Gabriel: obecnie tak, ponieważ wiele pakietów Pythona jest instalowanych przez uruchomienie setup.pypliku, który zawiera zależności, których potrzebują. Powinno się to poprawić, gdy pakiet Pythona stanie się plikami kółek ( pythonwheels.com ), które pozwolą ci zebrać listę wszystkich potrzebnych pakietów bez wykonywania dowolnego kodu w setup.pyplikach.
Simeon Visser

1
Dzięki za wyjaśnienie Simeon. Jeszcze jedno, jeśli nie masz nic przeciwko: dlaczego tak się nie dzieje w Ubuntu 14.04, ale tak jest w Ubuntu 12.04?
Gabriel

4
@Gabriel: Nie jestem pewien - z mojego doświadczenia pipwynika, że ​​zawsze kończy się niepowodzeniem, gdy nie może znaleźć pakietu do zainstalowania. To powiedziawszy pipjest aktywnie rozwijane, więc może się zdarzyć, że masz wersję, z którą nie pracowałem.
Simeon Visser

@SimeonVisser, „[koła] pozwalają zebrać listę wszystkich potrzebnych pakietów bez wykonywania dowolnego kodu”, ciekawe, dzielenie myśli, jak to zrobić (do teraz)?
sschuberth

39

Zainstalowałem python3, ale mój python w / usr / bin / python był nadal starą wersją 2.7

To zadziałało ( <pkg>było pyserialw moim przypadku):

python3 -m pip install <pkg>

1
dzieje się tak, gdy w setuptools istnieje python_requires='>=3.0'wymóg
Juan-Kabbali

11

Po 2 godzinach poszukiwań znalazłem sposób, aby to naprawić za pomocą jednej linii poleceń. Musisz znać wersję pakietu (po prostu wyszukaj wersję PAKIETU).

Komenda:

python3 -m pip install --pre --upgrade PACKAGE==VERSION.VERSION.VERSION


4

Spróbuj zainstalować Flask przez PowerShell, używając następującego polecenia.

pip install --isolated Flask

Umożliwi to instalacji uniknięcie zmiennych środowiskowych i konfiguracji użytkownika.


3

Nie zawsze, ale w niektórych przypadkach pakiet już istnieje. Na przykład - getpass. Nie jest wymieniony na liście „pip list”, ale można go importować i używać:

wprowadź opis obrazu tutaj

Jeśli spróbuję zainstalować getpass za pomocą pip, pojawia się następujący błąd: „Nie można znaleźć wersji spełniającej wymagania getpass”


1

Otrzymałem ten błąd podczas instalacji awsclina Windows 10 w anaconda (python 3.7). Podczas rozwiązywania problemów poszedłem do odpowiedzi https://stackoverflow.com/a/49991357/6862405 a następnie do https://stackoverflow.com/a/54582701/6862405 . W końcu okazało się, że konieczne jest zainstalowanie bibliotek PyOpenSSL, cryptography, enum34, idnai ipaddress. Po zainstalowaniu tych (za pomocą prostego pip installpolecenia) udało mi się zainstalować awscli.


1

Jeśli napotkasz ten problem w miejscu pracy. To może być rozwiązanie dla Ciebie.

pip install -U <package_name> --user --proxy=<your proxy>


-6

Użyj wiersza polecenia, a następnie wybierz opcję Uruchom jako administrator.

Zaktualizuj wersję pip

Aby zaktualizować PIP, wpisz to polecenie, a następnie naciśnij klawisz Enter: -

python.exe -m pip install --upgrade pip

Wróć do ścieżki Pythona C: \ Users \ Jack \ AppData \ Local \ Programs \ Python \ Python37 \ Scripts

Wpisz notatnik jupyter

Zostaniesz przekierowany na http: // localhost: 8888 / undefined / tree - Strona główna Jupyter

Mam nadzieję, że to pomoże !!!!!!!!!!!


2
Co ma z tym wspólnego jupyter?
Bzazz

w jaki sposób aktualizacja pip może rozwiązać zależności? Wymaga zależności w katalogu wywołującym.
Rizwan Javid

-7

może pomóc

koło instalacji sudo pip == 0.29.0


4
Przepraszam .. Nie czytam chińskiego ani innego języka azjatyckiego .. Link polecający może się zepsuć w przyszłości ... prześlij podstawowe informacje tutaj. Jak opublikował swoją niską jakość odpowiedzi bez kontekstu.
ZF007

1
Link polecający jest w języku japońskim ... rozważ udostępnienie linków w języku angielskim
javidazac

6
Kod jest zrozumiały dla wszystkich programistów, a ilość języka japońskiego jest zarówno minimalna, jak i niewiele większa niż w tytułach wprowadzających następujący kod (przetłumacz go, jeśli jest to dla ciebie zbyt trudne, ale naprawdę nie musisz tego robić, aby zrozumieć, co się dzieje). Nie powinno być problemu z używaniem języków innych niż angielski, o ile przykłady kodu są jasne i nie są całkowicie zależne od używanego języka obcego.
rg88

6
@ rg88 To byłoby w porządku w przypadku komentarza (być może z zastrzeżeniem), ale odpowiedź na temat przepełnienia stosu powinna być samodzielna i przekonująca.
tripleee
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.