Установка Python 2.7 без рута - PullRequest
9 голосов
/ 29 апреля 2011

Я пытался установить Python 2.7 без рута на удаленной машине с Linux.Я выполнил команды

./configure prefix=/  
make install DESTDIR=/xxx/yyy/ 

, где / xxx / yyy / - это каталог, к которому у меня есть права на чтение и запись.

В конце я столкнулся с проблемой.В нем говорится:

сборка базы данных с использованием gdbm ИНФОРМАЦИЯ: Не удается найти библиотеки и / или заголовки Tcl / Tk

Сборка Python завершена, но необходимые биты для сборки этих модулей не былиfound: _tkinter bsddb185 dl imageop sunaudiodev Чтобы найти необходимые биты, посмотрите имя модуля в setup.py в detect_modules ().

при запуске build_scripts при запуске install_lib создание /lib/python2.7 ошибка: не удалось создать/lib/python2.7 ': В доступе отказано

Правильно ли я предпринял шаги по установке без рут-доступа?(т.е. мои команды configure и make?) Может кто-нибудь сказать мне, почему он не будет установлен должным образом?

Спасибо,
ktm

Ответы [ 5 ]

14 голосов
/ 28 мая 2013

Я просто устанавливаю python2.7.5 без права администратора.Я думаю, что команда должна быть:

./configure prefix=/xxx/yyy
make install

, а затем вы должны добавить путь / xxx / yyy / bin в .bashrc как:

PYTHONPATH=/home/songmeixu/python/bin
export PATH=$PYTHONPATH:$PATH
9 голосов
/ 29 апреля 2011

Вы должны иметь префикс = / xxx / гггг.При использовании префикса = / он пытается установить библиотеки в /lib/python2.7, а не /xxx/yyy/lib/python2.7.

.
4 голосов
/ 02 мая 2011

Не компилируйте, получите предварительно собранный двоичный файл из ActiveState .

0 голосов
/ 24 марта 2019

Я написал скрипт, который устанавливает Python 2 (в котором отсутствуют удобные возможности, предоставляемые Python 3 для пользовательских установок) и Pip 2 в каталог пользователя, чтобы обычный пользователь мог быть администратором своих модулей и т. Д.

#!/bin/bash
VERSION="2.7.11"
BUILDDIR=~/"build/python"
INSTALLDIR=~/"python/Python-$VERSION"

mkdir -p ${BUILDDIR}
cd ${BUILDDIR}
if [ ! -f $BUILDDIR/Python-$VERSION.tgz ]
then
wget https://www.python.org/ftp/python/$VERSION/Python-$VERSION.tgz
tar zxfv Python-$VERSION.tgz
fi
find $BUILDDIR -type d | xargs chmod 0755
cd Python-$VERSION


mkdir -p ${INSTALLDIR}
./configure --prefix=${INSTALLDIR}
make && make install

# Append to user PATH or create symbolic link to .local/bin
# [[ ":$PATH:" != *":$HOME/python/Python-$VERSION/bin:"* ]] && printf "export PATH=$HOME/python/Python-$VERSION/bin:$PATH\n" >> ~/.bashrc
if [ ! -d ~/.local/bin ]; then mkdir -p ~/.local/bin; fi
ln -s ~/python/Python-"$VERSION"/bin/python ~/.local/bin/

source ~/.bashrc

# Install local pip
cd ..
wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py -O - | python - --user
[[ ":$PATH:" != *":$HOME/.local/bin:"* ]] && printf "export PATH=$HOME/.local/bin:$PATH\n" >> ~/.bashrc

# Install modules like this:
# pip install --target="$HOME/.local/lib/python$VERSION/site-packages"

# Add those modules to PYTHONPATH
[[ ":$PYTHONPATH:" != *":$HOME/.local/lib/python$VERSION/site-packages:"* ]] && printf "export PYTHONPATH=$HOME/.local/lib/python$VERSION/site-packages:$PYTHONPATH\n" >> ~/.bashrc

source ~/.bashrc

Предостережение: этот сценарий, по общему признанию, самоуверен в том, что он добавит несколько строк к вашему ~/.bashrc для переменной PATH ENV. Если это нежелательно, просто закомментируйте соответствующие строки в скрипте.


Пример. Генератор служебных файлов для служебных файлов Airprint для использования в Avahi не поддерживает Python 3. Чтобы поддерживать чистоту системы, я просто устанавливаю локальную версию Python 2 и запускаю airprint-generate.py, а затем удаляю вся установка (экономит место на маленьком Raspberry Pi Zero W).

0 голосов
/ 26 апреля 2014

Вместо того, чтобы строить из исходного кода вручную, я бы посоветовал linuxbrew сделать сборку за вас.У DigitalOcean есть хороший учебник по установке linuxbrew.После этого вы можете просто сказать brew install python и получить хорошо управляемую установку Python, включая pip.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...