Jak zainstalować moduły python bez dostępu root?

220

Biorę lekcje uniwersyteckie i dostałem „rachunek instruktażowy”, który jest kontem szkolnym, na którym mogę ssh do wykonania pracy. Chcę uruchomić mój intensywny obliczeniowo kod Numpy, matplotlib, scipy na tym komputerze, ale nie mogę zainstalować tych modułów, ponieważ nie jestem administratorem systemu.

Jak mogę przeprowadzić instalację?

Rishi
źródło
14
Możesz przekazać --user lub --prefix do setup.py dla instalowanego pakietu, aby zainstalować go lokalnie. Zobacz ostrzegawczą instalację modułów Python
arunkumar,

Odpowiedzi:

306

W większości sytuacji najlepszym rozwiązaniem jest poleganie na tak zwanej lokalizacji „witryny użytkownika” (szczegóły w PEP ), uruchamiając:

pip install --user package_name

Poniżej znajduje się bardziej „ręczny” sposób od mojej oryginalnej odpowiedzi, nie musisz go czytać, jeśli powyższe rozwiązanie działa dla Ciebie.


Dzięki easy_install możesz:

easy_install --prefix=$HOME/local package_name

który zainstaluje się w

$HOME/local/lib/pythonX.Y/site-packages

(folder „lokalny” to typowa nazwa, z której korzysta wiele osób, ale oczywiście możesz określić dowolny folder, do którego masz uprawnienia do zapisu).

Musisz ręcznie utworzyć

$HOME/local/lib/pythonX.Y/site-packages

i dodaj go do PYTHONPATHzmiennej środowiskowej (w przeciwnym razie easy_install będzie narzekać - btw uruchom powyższą komendę raz, aby znaleźć poprawną wartość dla XY).

Jeśli nie używasz easy_install, poszukaj opcji prefiksu, większość skryptów instalacyjnych pozwala ją określić.

Za pomocą pip możesz używać:

pip install --install-option="--prefix=$HOME/local" package_name
tiho
źródło
1
co jeśli python nie ma pipi nie jest easy_installdostępny?
Girardi
Instalacja przebiegła dobrze (metoda pip), ale importowanie nazwa_pakietu nie działa. Czy muszę zmienić / dodać niektóre konfiguracje? także gdzie skopiowano instalację (pod względem folderów)?
idoda
2
//, @AnotherDayAnotherRob, to brzmi jak dobre pytanie .
Nathan Basanese
2
--user
Sensowne
1
@Girardi Jeśli zainstalowałeś Pythona z src na lokalnym katalogu / my_python /, dobrze byłoby najpierw zainstalować pip w tej lokalizacji za pomocą: wget --no-check-certificate bootstrap.pypa.io/get-pip.py -O - ​​| / my_python / bin / python - wtedy możesz zainstalować inne moduły z prefiksem pip +
teng_wenxuan
51

Brak uprawnień dostępu i instalacji easy_install?

Następnie możesz utworzyć python virtualenv( https://pypi.python.org/pypi/virtualenv ) i zainstalować pakiet z tego wirtualnego środowiska.

Wystarczy wykonać 4 polecenia w powłoce (wstaw bieżącą wersję, jak 16.1.0 dla XXX):

$ curl --location --output virtualenv-X.X.X.tar.gz https://github.com/pypa/virtualenv/tarball/X.X.X
$ tar xvfz virtualenv-X.X.X.tar.gz
$ python pypa-virtualenv-YYYYYY/src/virtualenv.py my_new_env
$ . my_new_env/bin/activate
(my_new_env)$ pip install package_name

Źródło i więcej informacji: https://virtualenv.pypa.io/en/latest/installation/

drżenie
źródło
1
Ta odpowiedź była dla mnie przydatna w systemie bez pipzainstalowanego oprogramowania.
Dan Stowell,
Wypróbowałem wariant mojej lokalnej instalacji Pythona. curl --silent --show-error --retry 5 bootstrap.pypa.io/get-pip.py | ~ / Python-2.7.8 / python
Neerav
3
Wydaje się, że źródło zostało przeniesione i powyższe nie działa po wyjęciu z pudełka. Podobne instrukcje https://virtualenv.pypa.io/en/latest/installation/działają jednak dobrze :)
Andras Deak
13

Możesz uruchomić easy_install, aby zainstalować pakiety Pythona w swoim katalogu domowym, nawet bez dostępu użytkownika root. Istnieje standardowy sposób, aby to zrobić za pomocą site.USER_BASE, która domyślnie przyjmuje wartość $ HOME / .local lub $ HOME / Library / Python / 2.7 / bin i jest domyślnie dołączona do PYTHONPATH

Aby to zrobić, utwórz plik .pydistutils.cfg w katalogu domowym:

cat > $HOME/.pydistutils.cfg <<EOF
[install]
user=1
EOF

Teraz możesz uruchomić easy_install bez uprawnień roota:

easy_install boto

Alternatywnie pozwala to również uruchomić pip bez dostępu do katalogu głównego:

pip install boto

To działa dla mnie.

Źródło z bloga Wesley Tanaka: http://wtanaka.com/node/8095

Yusong
źródło
1
To działało dla mnie, aby zainstalować bez dostępu roota na serwerze Linux. Dziękuję Ale nie mam pojęcia, dlaczego to zadziałało. Czy jakieś ciało może podpowiedzieć?
ChathuraG,
9

Jeśli musisz użyć setup.pyskryptu distutils , istnieje kilka opcji wiersza polecenia wymuszających miejsce docelowe instalacji. Zobacz http://docs.python.org/install/index.html#alternate-installation . Jeśli problem się powtarza, możesz skonfigurować plik konfiguracyjny distutils, zobacz http://docs.python.org/install/index.html#inst-config-files .

Ustawienie zmiennej PYTHONPATH opisano w poście tihos.

rocksportrocker
źródło
1
Wielkie dzięki. Pomyślnie zainstalowałem lxmlbibliotekępython <lxml_distrib_dir>/setup.py install --home=<dir>
Serge S.
6

Ważne pytanie. Serwer, którego używam (Ubuntu 12.04) miał, easy_install3ale nie miał pip3. W ten sposób zainstalowałem Pip, a następnie inne pakiety w moim folderze domowym

  1. Poprosiliśmy administratora o zainstalowanie pakietu Ubuntu python3-setuptools

  2. Zainstalowany pip

Lubię to:

 easy_install3 --prefix=$HOME/.local pip
 mkdir -p $HOME/.local/lib/python3.2/site-packages
 easy_install3 --prefix=$HOME/.local pip
  1. Dodaj Pip (i inne aplikacje Python do ścieżki)

Lubię to:

PATH="$HOME/.local/bin:$PATH"
echo PATH="$HOME/.local/bin:$PATH" > $HOME/.profile
  1. Zainstaluj pakiet Python

lubię to

pip3 install --user httpie

# test httpie package
http httpbin.org
Pułkownik Panika
źródło
4

Używam JuJu, który zasadniczo pozwala mieć naprawdę małą dystrybucję linuksa (zawierającą tylko menedżera pakietów) w twoim katalogu $ HOME / .juju.

Pozwala mieć dostęp do twojego niestandardowego systemu w katalogu domowym przez proot, a zatem możesz instalować dowolne pakiety bez uprawnień roota. Będzie działał poprawnie dla wszystkich głównych dystrybucji Linuksa, jedynym ograniczeniem jest to, że JuJu może działać na jądrze Linuksa z minimalną zalecaną wersją 2.6.32.

Na przykład po zainstalowaniu JuJu w celu instalacji pip wystarczy wpisać:

$>juju -f
(juju)$> pacman -S python-pip
(juju)> pip
użytkownik967489
źródło
1

Zainstaluj virtualenv lokalnie ( źródło instrukcji ):

Ważne: Wstaw bieżącą wersję (np. 16.1.0 ) dla XXX .
Sprawdź nazwę wyodrębnionego pliku i wstaw go do RRRRR .

$ curl -L -o virtualenv.tar.gz https://github.com/pypa/virtualenv/tarball/X.X.X
$ tar xfz virtualenv.tar.gz
$ python pypa-virtualenv-YYYYY/src/virtualenv.py env

Przed użyciem lub zainstalowaniem dowolnego pakietu w sourcewirtualnym środowisku Python env:

$ source env/bin/activate

Aby zainstalować nowe pakiety Pythona (np. Numpy), użyj:

(env)$ pip install <package>
Niklas
źródło
Jest to zasadniczo zaktualizowana wersja instrukcji tremendows . Jego instrukcje są nieaktualne. Moja edycja została odrzucona. Z tego powodu opublikowałem go jako nową instrukcję.
Niklas