Параметр --prefix Easy_install не меняется, когда он пытается установить мой пакет

Я хочу установить Sphinx 1.1.3 для Python 2.6. Однако у меня нет прав sudo. Поэтому вместо того, чтобы устанавливать его в место по умолчанию, я хочу установить другое место, используя --prefix. Делаем следующее:

-bash-3.2$ easy_install Sphinx-1.1.3-py2.6.egg --prefix=/homes/ndeklein/python2.6/site-packages/

дает мне:

error: can't create or remove files in install directory

The following error occurred while trying to add or remove files in the
installation directory:

[Errno 13] Permission denied: '/usr/lib/python2.4/site-packages/test-easy-install-18534.write-test'

The installation directory you specified (via --install-dir, --prefix, or
the distutils default setting) was:

/usr/lib/python2.4/site-packages/

Я набираю что-то неправильно с префиксом? Кроме того, что я мог бы использовать вместо этого (что я использовал с другими пакетами):

python setup.py install --home=/homes/ndeklein/python2.6/site-packages/

но я не могу найти сценарий setup.py. Я предполагаю, что у EGG нет сценария setup.py, это правда?


person Niek de Klein    schedule 04.04.2012    source источник


Ответы (3)


На этом веб-сайте обсуждается установка Python без полномочий root. Это может быть полезно для вас...

http://www.astropython.org/tutorials/user-rootsudo-free-installation-of-python-modules7/

Чтобы процитировать немного из него:

Пользовательский файл конфигурации ~/.pydistutils.cfg переопределяет внутренний системный путь для установки пакетов Python, перенаправляя встроенные библиотеки (lib), скрипты (bin) и данные (share) в принадлежащие пользователю и указанные каталоги. Вы должны просто указать установщику Python, где находятся эти каталоги.

Пользовательский файл ~/.pydistutils.cfg содержит следующие строки с довольно очевидным синтаксисом:

[install]
install_scripts = ~/usr/bin
install_data = ~/usr/share
install_lib = ~/usr/lib/python2.4/site-packages

Конечно, любые каталоги, которые вы укажете, вероятно, должны существовать, и вы должны поместить их в начало вашего PYTHONPATH:

export PYTHONPATH=~/usr/lib/python2.4/site-packages:${PYTHONPATH}

Также похоже, что более современные установки Python (по сравнению с вещами в ссылке) должны иметь возможность использовать каталог ~/.local:

easy_install --prefix=~/.local ...

Существует также:

easy_install --user ...

который будет установлен в пользовательский каталог сайта.

person mgilson    schedule 04.04.2012
comment
По-видимому, в исходном коде был setup.py, поэтому я использовал его, но, поскольку это очень удобная ссылка, я принял ваш ответ. - person Niek de Klein; 04.04.2012
comment
Да, я только что нашел эту ссылку на днях для моего коллеги ... раньше, когда у меня не было root, я установил приватную версию python (я все равно хотел 2.7 ...), но я добавил эту ссылку в закладки потому что это казалось таким полезным. - person mgilson; 04.04.2012
comment
@MarkKCowan - Да, было бы. Если бы я, 27-летний, знал, что я, 31-летний, знает об этикете StackOverflow, это был бы лучший пост :-). Я буду работать над его обновлением. На данный момент я исправил ссылку. - person mgilson; 08.07.2016

Вам нужно указать параметры перед пакетом, поэтому команда должна быть:

easy_install --prefix=/homes/ndeklein/python2.6/site-packages/ Sphinx-1.1.3-py2.6.egg 
person Nick Edwards    schedule 09.10.2013

Вы можете попробовать использовать pip install easy_install (в наши дни pip рекомендуется вместо easy_install)

Тогда вы можете просто использовать

pip install --user Sphinx

см. http://www.pip-installer.org/en/latest/installing.html о том, как установить pip, если это необходимо

Вы также можете захотеть pip установить virtualenv и работать внутри virtualenv (где pip установит все пакеты в папку пакетов локального сайта). см. http://pypi.python.org/pypi/virtualenv для получения дополнительной информации.

person Roman A. Taycher    schedule 04.04.2012