Как установить модули Python без рут-доступа?

220

Я посещаю некоторые университетские классы, и мне дали «учебный счет», который я могу использовать в школе для выполнения работы. Я хочу запустить на этой машине мой интенсивно вычислительный код Numpy, matplotlib, scipy, но не могу установить эти модули, потому что я не системный администратор.

Как я могу сделать установку?

Риши
источник
14
Вы можете передать --user или --prefix в setup.py для пакета, который вы устанавливаете, чтобы установить его локально. Смотрите оповещение об установке модулей Python
arunkumar

Ответы:

306

В большинстве ситуаций лучшим решением является использование так называемого «пользовательского сайта» (подробности см. В PEP ), выполнив:

pip install --user package_name

Ниже приведен более «ручной» путь из моего первоначального ответа, вам не нужно читать его, если вышеуказанное решение работает для вас.


С easy_install вы можете сделать:

easy_install --prefix=$HOME/local package_name

который установит в

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

(«локальная» папка - это типичное имя, которое используют многие люди, но, конечно, вы можете указать любую папку, в которую у вас есть права на запись).

Вам нужно будет создать вручную

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

и добавьте его в PYTHONPATHпеременную среды (в противном случае easy_install будет жаловаться - btw запустите приведенную выше команду один раз, чтобы найти правильное значение для XY).

Если вы не используете easy_install, ищите параметр префикса, большинство сценариев установки позволяют вам указать его.

С помощью pip вы можете использовать:

pip install --install-option="--prefix=$HOME/local" package_name
Tiho
источник
1
Что делать, если Python не имеет pipи не easy_installдоступен?
Жирарди
Установка прошла нормально (метод pip), но импорт package_name не работает. Нужно ли менять / добавлять некоторые конфигурации? также куда была скопирована установка (по папке)?
idoda
2
//, @AnotherDayAnotherRob, звучит как хороший вопрос .
Натан Басанезе
2
Возможно, имеет смысл обновить ответ и поставить --userинструкцию вверху. :)
VasiliNovikov
1
@Girardi Если вы установили python из src в локальный каталог / my_python /, было бы полезно сначала установить pip в этом месте с помощью: wget --no-check-certificate bootstrap.pypa.io/get-pip.py -O - ​​| / my_python / bin / python - тогда вы можете установить другие модули с префиксом pip +
teng_wenxuan
51

Нет прав доступа или установки easy_install?

Затем вы можете создать Python virtualenv( https://pypi.python.org/pypi/virtualenv ) и установить пакет из этой виртуальной среды.

Достаточно будет выполнить 4 команды в оболочке (вставьте текущий выпуск, например, 16.1.0 для 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

Источник и дополнительная информация: https://virtualenv.pypa.io/en/latest/installation/

tremendows
источник
1
Этот ответ был полезен для меня в системе без pipустановленного.
Дэн Стоуэлл
Я попробовал вариант для моей локальной установки Python. curl --silent --show-error --retry 5 bootstrap.pypa.io/get-pip.py | ~ / Python-2.7.8 / python
Neerav
3
Источник, кажется, переместился, и вышеперечисленное не работает из коробки. Подобные инструкции https://virtualenv.pypa.io/en/latest/installation/работают нормально, хотя :)
Андрас Дик
13

Вы можете запустить easy_install для установки пакетов Python в свой домашний каталог, даже не имея root-доступа. Есть стандартный способ сделать это, используя site.USER_BASE, который по умолчанию имеет значение типа $ HOME / .local или $ HOME / Library / Python / 2.7 / bin и по умолчанию включен в PYTHONPATH.

Для этого создайте .pydistutils.cfg в вашем домашнем каталоге:

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

Теперь вы можете запустить easy_install без прав root:

easy_install boto

Кроме того, это также позволяет запускать pip без прав root:

pip install boto

Это работает для меня.

Источник из блога Уэсли Танаки: http://wtanaka.com/node/8095

Yusong
источник
1
Это сработало для меня, чтобы установить без доступа root на сервере Linux. Спасибо. Но я понятия не имею, почему это сработало. Может ли какой-нибудь орган дать подсказку?
ChathuraG
9

Если вам нужно использовать setup.pyскрипт distutils , есть несколько параметров командной строки для принудительного назначения места установки. См. Http://docs.python.org/install/index.html#alternate-installation . Если эта проблема повторяется, вы можете настроить файл конфигурации distutils, см. Http://docs.python.org/install/index.html#inst-config-files .

Установка переменной PYTHONPATH описана в посте Тихоса.

rocksportrocker
источник
1
Большое спасибо. Я успешно установил lxmlбиблиотеку, используяpython <lxml_distrib_dir>/setup.py install --home=<dir>
Серж С.
6

Важный вопрос Сервер, который я использую (Ubuntu 12.04), easy_install3но не имел pip3. Так я установил Pip и другие пакеты в свою домашнюю папку

  1. Попросил администратора установить пакет Ubuntu python3-setuptools

  2. Установленный пункт

Как это:

 easy_install3 --prefix=$HOME/.local pip
 mkdir -p $HOME/.local/lib/python3.2/site-packages
 easy_install3 --prefix=$HOME/.local pip
  1. Добавить Pip (и другие приложения Python к пути)

Как это:

PATH="$HOME/.local/bin:$PATH"
echo PATH="$HOME/.local/bin:$PATH" > $HOME/.profile
  1. Установить пакет Python

как это

pip3 install --user httpie

# test httpie package
http httpbin.org
Полковник паника
источник
4

Я использую JuJu, который в основном позволяет иметь очень маленький дистрибутив linux (содержащий только менеджер пакетов) внутри вашего каталога $ HOME / .juju.

Это позволяет иметь собственную систему внутри домашнего каталога, доступную через proot, и, следовательно, вы можете устанавливать любые пакеты без прав root. Он будет работать корректно во всех основных дистрибутивах Linux, единственное ограничение заключается в том, что JuJu может работать на ядре Linux с минимальной рекомендованной версией 2.6.32.

Например, после установки JuJu для установки pip просто наберите следующее:

$>juju -f
(juju)$> pacman -S python-pip
(juju)> pip
user967489
источник
1

Установите virtualenv локально ( источник инструкций ):

Важно: вставьте текущий выпуск (например, 16.1.0 ) для XXX .
Проверьте имя извлеченного файла и вставьте его для YYYYY .

$ 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

Прежде чем вы сможете использовать или установить любой пакет, который вам нужен, в sourceвашу виртуальную среду Python env:

$ source env/bin/activate

Чтобы установить новые пакеты Python (например, Numpy), используйте:

(env)$ pip install <package>
Никлас
источник
Это в основном обновленная версия инструкций Tremendow . Его инструкции устарели. Мое редактирование было отклонено. Из-за этого я разместил это как новую инструкцию.
Никлас