Potrzebuję zainstalować pakiet z PyPi prosto w moim skrypcie. Może jest jakiś moduł lub funkcja distutils
(distribute
, pip
itd.), Która pozwala mi po prostu wykonać coś w rodzaju pypi.install('requests')
, a żądania zostaną zainstalowane w moim virtualenv.Instalowanie modułu python w kodzie
Odpowiedz
Można również użyć coś takiego:
import pip
def install(package):
pip.main(['install', package])
# Example
if __name__ == '__main__':
install('argh')
Myślę, że pip.main() jest najbardziej poprawną odpowiedzią. Nie rozumiem, dlaczego nie znalazłem go, gdy zadano mi to pytanie. Dziękujemy i zapraszamy do SO. – chuwy
Tutaj kończy się po zainstalowaniu. – fiatjaf
@Rikard Anglerud. Czy istnieje możliwość uaktualnienia pakietów w pakiecie? coś w rodzaju ''install --upgrade''? – jason
Użytkownik definiuje moduł zależny wewnątrz pliku setup.py swojego pakietu za pomocą opcji "install_requires".
Jeśli pakiet wymaga wygenerowania skryptu konsoli, można użyć punktu wejścia "console_scripts" w celu wygenerowania skryptu opakowującego, który zostanie umieszczony w folderze "bin" (np. Twojego środowiska virtualenv).
To jest poprawna odpowiedź i jedyny rozsądny sposób zarządzania zależnościami projektów Pythona. Będzie działać z virtualenv, Fabric, buildout, ty to nazwij. Metoda opisana przez @xiaomao, mimo że odpowiada dokładnie na to, co zadawał OP, jest czystym szaleństwem. –
podczas gdy jest to właściwa rada, nie odpowiada na zadane pytanie –
Podczas gdy pakowanie jest tematem, istnieje wiele innych przypadków użycia, na przykład skrypt wdrożeniowy napisany w pythonie. – hoefling
To powinno działać:
import subprocess
def install(name):
subprocess.call(['pip', 'install', name])
Tak, zdecydowanie powinno działać. Ale myślałem, że jest bardziej elegancki sposób;) Będę czekał trochę, może być. – chuwy
@Dvvvoter: Co dokładnie jest nie tak z moją odpowiedzią? Ta odpowiedź ma wszystko, czego chciał OP. Nie używa nawet powłoki. – quantum
To zależy od tego, czy właściwa wersja pip jest pierwsza na ścieżce. Jeśli użytkownik uruchamia alternatywną instalację Pythona, PIP zostanie zainstalowany na pierwszym, a nie na bieżącym. Powyższe podejście do importowania zostanie zainstalowane we właściwym miejscu. Mimo to przegłosowałem, aby przeciwdziałać głosowaniu w dół. – GaryBishop
Jeśli chcesz użyć pip
zainstalować wymagany pakiet i zaimportować go po instalacji, można użyć tego kodu :
def install_and_import(package):
import importlib
try:
importlib.import_module(package)
except ImportError:
import pip
pip.main(['install', package])
finally:
globals()[package] = importlib.import_module(package)
install_and_import('transliterate')
Jeśli zainstalowałeś pakiet jako użytkownik, możesz napotkać problem nie możesz po prostu zaimportować paczki. Aby uzyskać dodatkowe informacje, patrz How to refresh sys.path?.
Każdy pomysł jak to zrobić w Pythonie 3? Imp.reload (witryna) 'dostaje mnie' RuntimeError: słownik zmienił rozmiar podczas iteracja' – kgadek
gdzie to instaluje pakiet, po tym jak to zrobiłem, nie byłem w stanie zrobić 'pip uninstall
Byłby ciekawy, czy to działałoby poprawnie, jeśli to zrobię: 'żądania instalacji potoku [zabezpieczenia]'? Nie byłem pewien, czy poprawnie zdefiniowałoby to globale poprawnie – Fallenreaper
zawsze można pobrać
import os
następnie w prawo nakazuje wszystkim terminal ściągnąć go stamtąd.
jak
while True:
code = input("")
os.system("code")
cokolwiek to jest, nie jestem pewien, ale jeśli nawet nie wiem jak to zrobić w terminalu jak masz zamiar to zrobić w Pythonie.
Mam nadzieję, że to pytanie jest nadal aktualne. zrobiłem powyższy coś takiego:
import sys
import os
import site
try:
import pip
except ImportError:
print "installing pip"
cmd = "sudo easy_install pip"
os.system(cmd)
reload(site)
try:
import requests
except ImportError:
print "no lib requests"
import pip
cmd = "sudo pip install requests"
print "Requests package is missing\nPlease enter root password to install required package"
os.system(cmd)
reload(site)
drugi blok try może być napisany w ramach innego pierwszego bloku try, jak również, ale w moim oświadczeniu Problem musi napisać dwa oddzielne bloki.
os.system is depr ecated ... użyj modułu podprocesu –
Zakładam, że mamy pips na naszej maszynie i spróbujemy złapać konkretną zależność, której brakuje. Spróbuj tej metody i daj znać, co myślisz.
import os
try:
import something
.....
.....
except ImportError as e:
pip = lambda : os.system('pip install' + str(e)[15:])
pip()
można zainstalować za pomocą modułu sys dobrze
import sys
!{sys.executable} -m pip install <package> --user
używam os.system
emulować terminal os importowanie modułu bo wtedy można użyć modułu we wszystkich innych skryptów.
Na przykład tworzę silnik gry, który działa na oddzielnych skryptów dodawanych razem, większość z tych skryptów używać Pygame i jeśli użytkownik nie posiada Pygame, plik startowy będzie je dodać za pomocą tego kodu:
import os
os.system('pip install pygame')
Niestety, nie mam pojęcia, jak pobrać pip na komputerze użytkownika, więc jest to zależne od użytkownika posiadającego pip.
- 1. Instalowanie modułu Twitter Python
- 2. Tworzenie i instalowanie własnego modułu
- 3. Budowanie konkretnego modułu w kodzie źródłowym Androida
- 4. Instalowanie Homebrew Python i łączenie
- 5. Instalowanie MySQL-python dla Django
- 6. Python instalowanie błędu xlwt moduł
- 7. Instalowanie środowiska Python/Sphinx w systemie Windows?
- 8. Instalowanie pakietów python w środowisku nitracyjnym
- 9. Instalowanie jajek w języku Python pod PyPy
- 10. Instalowanie Python2.6
- 11. Instalowanie numpy
- 12. Instalowanie mapy bazowej na komputerze Mac/Python
- 13. Instalowanie wielu wersji głównych i bitowych Python
- 14. Instalowanie MySQL-python na komputerze Mac
- 15. Wywołanie modułu Perla z Python
- 16. poprawa szybkości importu modułu Python
- 17. Sprawdzanie wersji modułu Python w środowisku wykonawczym
- 18. Instalacja modułu żądania w python 2.7 Windows
- 19. Jak wydrukować dokumentację modułu w języku Python
- 20. Jak zmienić nazwę modułu Python?
- 21. Python PyPotrace Potrace Instalowanie w systemie Windows - Windows10
- 22. Instalowanie jpype w Mountain Lion
- 23. Dodanie modułu (konkretnie pymorph) do Spydera (Python IDE)
- 24. Python - pobierz pełną nazwę modułu pakietu
- 25. dodanie nagłówka do modułu żądania python
- 26. Python: Przekazywanie łańcucha Unicode do modułu C++
- 27. Instalowanie Django z pip
- 28. Python: Znajdź bezwzględną ścieżkę importowanego modułu
- 29. ImportError: Brak modułu o nazwie sklearn (Python)
- 30. Python 3.2: Nie można zaimportować modułu sqlite3
Dlaczego nie definiujesz powiązanego modułu jako zależności w pliku setup.py swojego pakietu? –
wiesz ... sposób, w jaki faktycznie powinno to być zrobione ... ale zawsze możesz os.system ("pip install blah"), ale możesz potrzebować dostępu sudo ... lepiej po prostu uczynić z niego zależność w konfiguracji .py –
To samo pytanie, ale o łatwej instalacji (2.7 nie jest wysyłane z pip) –