Zakładając, że masz już zainstalowaną pip lub easy_install na swojej dystrybucji Pythona, chciałbym wiedzieć, w jaki sposób mogę zainstalować wymagany pakiet w katalogu użytkownika z samego skryptu.Jak zainstalować brakujący pakiet Pythona z poziomu skryptu, który tego potrzebuje?
Z tego co wiem, pip jest również moduł Pythona, więc rozwiązanie powinno wyglądać następująco:
try:
import zumba
except ImportError:
import pip
# ... do "pip install --user zumba" or throw exception <-- how?
import zumba
Co mi brakuje robi „pip zainstalować --user zumba” od wewnątrz pytona, nie wiem chcesz to zrobić, używając os.system()
, ponieważ może to spowodować inne problemy.
Zakładam, że jest to możliwe ...
Jak o tym rozwiązaniu: http://stackoverflow.com/questions/12332975/installing-python-module-within-code –
myślę, że to byłoby bardzo niepożądana praktyka kodowania poza skryptem instalacyjnym. Ja (jak sądzę, że większość ludzi) nie chciałby/zaufać programowi, który prowadzę, który zmienia moje środowisko. Narzędzia takie jak pip i virtualenv są właśnie tam, aby "użytkownik" miał kontrolę nad tym, jaki pakiet jest zainstalowany, do której wersji. Nie jestem ekspertem od distutils, ale wiem, że ma on listę wymagań wstępnych dla każdej paczki. Jeśli jest to tylko na własny użytek, prawdopodobnie możesz zmarnować trochę tego kodu. – Joop
Dzięki wam, działa idealnie. Na marginesie jest to dobre rozwiązanie dla samodzielnych skryptów, a nie modułów/pakietów. – sorin