Jak ręcznie zainstalować moduł Pypi bez pip / easy_install?


91

Chcę używać modułu gntp do wyświetlania powiadomień podobnych do tostera dla oprogramowania C / C ++. Chcę spakować wszystkie zależności, aby oprogramowanie było samowykonalne na innym komputerze.

Moduł gntp jest dostępny tylko za pośrednictwem instalatora pip, którego nie można użyć (komputer, na którym działa program, nie ma połączenia z Internetem): jak mogę zainstalować go ze źródeł?

Wolałbym nie zmuszać użytkownika do zainstalowania easy_install / pip i ręcznie dodawać ścieżkę pip do% PATH.

PS: Używam Pythona 2.7 na komputerze z systemem Windows.


4
Może z python setup.py install?
Nicolas,

Odpowiedzi:


149
  1. Pobierz pakiet
  2. rozpakuj go, jeśli jest spakowany
  3. cd do katalogu zawierającego setup.py
  4. Jeśli w dokumentacji zawartej w niniejszym dokumencie znajdują się instrukcje instalacji, przeczytaj je i postępuj zgodnie z nimi W INNY SPOSÓB
  5. Wpisz python setup.py install

W kroku 5 mogą być potrzebne uprawnienia administratora. W związku z tym to, co tutaj zrobisz, zależy od systemu operacyjnego. Na przykład w Ubuntu powiedziałbyśsudo python setup.py install

EDYCJA - podziękowania dla kwatford (patrz pierwszy komentarz)

Aby ominąć potrzebę uprawnień administratora w kroku 5 powyżej, możesz użyć flagi --user. W ten sposób możesz zainstalować pakiet tylko dla bieżącego użytkownika.

Doktorzy mówią:

Pliki zostaną zainstalowane w podkatalogach site.USER_BASE (dalej zapisywane jako baza użytkowników). Ten schemat instaluje czyste moduły Pythona i moduły rozszerzeń w tej samej lokalizacji (znanej również jako witryna.USER_SITE). Oto wartości dla systemu UNIX, w tym Mac OS X:

Więcej szczegółów można znaleźć tutaj: http://docs.python.org/2.7/install/index.html


8
pip / easy_install / setup.py zwykle akceptują --userflagę, aby zainstalować pakiet tylko dla bieżącego użytkownika, generalnie omijając potrzebę dostępu administratora.
kwatford,

3
Z jakiegoś powodu widzę to: ImportError: No module named 'setuptools'znalazłem, że tutaj: pypi.python.org/pypi/setuptools/1.1.6 Chociaż instalacja dała mi błędy wyjątku, teraz moduł websocket w ogóle nie działa, myślę, że dam na Pythonie 3.3 w systemie Windows w tym momencie.
SSH

2
@SSHThis: mam takie same wyniki w przypadku pakietu, którego instalację próbuję uruchomić. Zwiększenie szczegółowości daje komunikat „Ponieważ ta dystrybucja została zainstalowana - --multi-version [...]”, która jest zarówno fałszywa (tylko jedna wersja języka Python jest tutaj zainstalowana), jak i nieprzydatna (przy użyciu udokumentowanego „python -m easy_install [...]” „nie pomaga”), jestem z tobą - Python jest bezużyteczny.
Eric Towers

1
Myślę, że pip install target-packagezwykle automatycznie instaluje / aktualizuje inne pakiety, od których zależy pakiet docelowy. Czy dzieje się tak w przypadku podejścia setup.py? A może zip pakietu zawiera również wszystkie zależności? Czy masz na myśli to, że powinniśmy pobierać koła Pythona zamiast zamków błyskawicznych? Jak te dla numpy? Jeśli nie, gdzie znaleźć zamki błyskawiczne (na przykład numpy)? (Pytam o to wszystko, ponieważ jestem zmuszony pracować za korporacyjnym proxy, gdzie muszę walczyć o każde pobranie: '()
Mahesha999

3
Naprawdę nie możesz pobierać pakietów w trybie offline ... Jeśli chcesz je pobrać poza swoją głupią siecią w pracy, prawdopodobnie zrobiłbym co następuje: 1. Zrób virtualenv. 2. python setup.py installlub pip installwszystkie potrzebne rzeczy. 3. uruchom pip freeze, aby uzyskać listę wszystkich pakietów i wszystkich wersji. Możesz to zapisać w pliku (tradycyjnie nazywanym wymaganiami.txt). Następnie, jeśli chcesz pobrać pakiety, aby móc je skopiować na różne maszyny, których możesz używać pip download [options] -r <requirements file>. Nie jest to najbardziej efektywny sposób, ale łatwy
Sheena

5

Aby dokładniej wyjaśnić odpowiedź Sheeny , musiałem zainstalować narzędzia konfiguracyjne jako zależność od innego narzędzia, np . More-itertools .

Pobieranie

Kliknij Clone or downloadprzycisk i wybierz metodę. Umieściłem je w dev/py/libskatalogu w moim katalogu domowym użytkownika. Nie ma znaczenia, gdzie zostaną zapisane, ponieważ nie zostaną tam zainstalowane.

Instalowanie narzędzi instalacyjnych

Będziesz musiał uruchomić następujące elementy w katalogu setup-tools .

python bootstrap.py
python setup.py install

Instalacja zależności ogólnych

Teraz możesz przejść do bardziej itertools direcotry i zainstalować go jak zwykle.

  1. Pobierz pakiet
  2. Rozpakuj go, jeśli jest to archiwum
  3. Przejdź ( cd ...) do katalogu zawierającegosetup.py
  4. Jeśli w dokumentacji zawartej w niniejszym dokumencie znajdują się instrukcje instalacji, przeczytaj je i postępuj zgodnie z nimi W INNY SPOSÓB
  5. Wpisz: python setup.py install

2

Chociaż odpowiedź Sheeny spełnia swoje zadanie, pipnie kończy się na tym.

Z odpowiedzi Sheeny:

  1. Pobierz pakiet
  2. rozpakuj go, jeśli jest spakowany
  3. cd do katalogu zawierającego setup.py
  4. Jeśli w dokumentacji zawartej w niniejszym dokumencie znajdują się instrukcje instalacji, należy je przeczytać i postępować zgodnie z nimi W INNY SPOSÓB
  5. Wpisz python setup.py install

Na koniec otrzymasz .eggplik w formacie site-packages. Jako użytkownik nie powinno to przeszkadzać. Możesz importi uninstallpaczka normalnie. Jeśli jednak chcesz to zrobić w ten pipsposób, możesz kontynuować następujące kroki.

W site-packageskatalogu

  1. unzip <.egg file>
  2. zmień nazwę EGG-INFOkatalogu na<pkg>-<version>.dist-info
  3. Teraz zobaczysz osobny katalog z nazwą pakietu, <pkg-directory>
  4. find <pkg-directory> > <pkg>-<version>.dist-info/RECORD
  5. find <pkg>-<version>.dist-info >> <pkg>-<version>.dist-info/RECORD. Ma >>zapobiec nadpisaniu.

Patrząc na site-packageskatalog, nigdy nie zdasz sobie sprawy, że zainstalowałeś go bez pip. Po uninstallprostu zrób to, co zwykle pip uninstall <pkg>.


Co jeśli instaluję pakiet z repozytorium Anaconda i nie ma w nim setup.pypliku?
Zakłócony
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.