Як встановити модулі 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

(папка "local" - типове ім'я, яке використовують багато людей, але, звичайно, ви можете вказати будь-яку папку, у яку ви маєте права вводити).

Вам потрібно буде створити вручну

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

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

Якщо ви не використовуєте easy_install, шукайте опцію префікса, більшість сценаріїв встановлення дозволять вам вказати один.

З піп можна використовувати:

pip install --install-option="--prefix=$HOME/local" package_name

1
що робити, якщо python не має pipта easy_installє в наявності?
Жирарді

Установка пройшла чудово (метод pip), але імпортувати ім'я пакета не працює. Чи потрібно змінювати / додавати деякі конфігурації? також куди було скопійовано встановлення (у папку)?
idoda

2
//, @AbodyDayATHERRob, це звучить як хороше запитання .
Натан Басанес

2
Можливо, є сенс оновити відповідь і поставити --userінструкцію вгорі. :)
VasiliNovikov

1
@Girardi Якщо ви встановили python з src до локального dir / my_python /, було б корисно спочатку встановити pip у цьому місці за допомогою: wget --no-check-сертифікат bootstrap.pypa.io/get-pip.py -О - | / 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/


1
Ця відповідь була корисною для мене в системі, де не pipвстановлено.
Dan Stowell

Я спробував варіант для моєї локальної установки 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. Існує стандартний спосіб зробити це за допомогою сайту.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


1
Це працювало для мене, щоб встановити без кореневого доступу на сервер 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 описано в tihos post.


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


1

Встановіть virtualenv локально ( джерело інструкцій ):

Важливо: Вставте поточний випуск (наприклад, 16.1.0 ) для XXX .
Перевірте ім'я вилученого файлу та вставте його у РРРРР .

$ 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>

Це в основному оновлена ​​версія інструкцій tremendows . Його вказівки застарілі. Мою редакцію відхилено. Через це я опублікував це як нову інструкцію.
Ніклас
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.