Как установить библиотеку python вручную

Я построил механизм быстрого исправления (http://www.quickfixengine.org/) для одной из своих задач, а также в поддержке Python для него.

К сожалению, это многопользовательская среда, и у меня нет доступа к пути установки python. Таким образом, команда make install пытается скопировать файлы и терпит неудачу. Мне удалось закомментировать две строки, где он пытается это сделать, и установка make завершена. Поскольку я не могу поместить туда файлы, куда я могу поместить созданный файл .so?

И как мне сообщить python, что он там? Я просмотрел документацию python.org, но там описан только процесс установки setup.py.

Также я попытался указать путь для .so в sys.path, но это не сработало. И есть ли документы об анатомии пакета Python? Спасибо.


person Osada Lakmal    schedule 08.02.2011    source источник
comment
Также я попытался указать путь для .so в sys.path, но это не сработало. Пробовали ли вы импортировать модуль расширения из скрипта (или интерактивного сеанса) в тот же каталог, что и файл .so для расширения?   -  person gotgenes    schedule 10.02.2011


Ответы (3)


Я собираюсь предположить, что компиляция пакета QuickFix не создает файл setup.py, а только компилирует привязки Python и полагается на make install, чтобы поместить их в соответствующее место.

В этом случае быстрое и грязное исправление состоит в том, чтобы скомпилировать исходный код QuickFix, найти модули расширения Python (вы указали в своей системе, что они заканчиваются расширением .so) и добавить этот каталог в переменную окружения PYTHONPATH, например, добавить

export PYTHONPATH=~/path/to/python/extensions:PYTHONPATH

или аналогичная строка в файле конфигурации оболочки.

Более надежное решение будет включать в себя компиляцию с ./configure --prefix=$HOME/.local. Предполагая, что QuickFix знает, что нужно поместить файлы Python в соответствующий site-packages, когда вы выполняете make install, он должен установить файлы в ~/.local/lib/pythonX.Y/site-packages, который для Python 2.6+ уже должен находиться в вашем пути Python как каталог пакетов сайта для каждого пользователя.

Если, с другой стороны, он предоставил файл setup.py, просто запустите

python setup.py install --user

для Python 2.6+.

person gotgenes    schedule 08.02.2011

Вам нужно установить его в каталог в вашей домашней папке и каким-то образом манипулировать PYTHONPATH, чтобы этот каталог был включен.

Лучше и проще всего использовать virtualenv. Но для этого требуется установка, вызывающая ловушку 22. :) Но проверьте, установлен ли virtualenv. Если он установлен, вы можете сделать это:

$ cd /tmp
$ virtualenv foo
$ cd foo
$ ./bin/python

Затем вы можете просто запустить установку, как обычно, с помощью /tmp/foo/python setup.py install. (Очевидно, вам нужно создать виртуальную среду в своей папке в вашем домашнем каталоге, а не в /tmp/foo. ;))

Если нет virtualenv, вы можете установить свой собственный локальный Python. Но и этого нельзя допустить. Затем вы можете установить пакет в локальный каталог для пакетов:

$ wget http://pypi.python.org/packages/source/s/six/six-1.0b1.tar.gz#md5=cbfcc64af1f27162a6a6b5510e262c9d
$ tar xvf six-1.0b1.tar.gz 
$ cd six-1.0b1/
$ pythonX.X setup.py   install --install-dir=/tmp/frotz

Теперь вам нужно добавить /tmp/frotz/pythonX.X/site-packages к вашему PYTHONPATH, и вы должны работать!

person Lennart Regebro    schedule 08.02.2011

Вот официальный FAQ по установке модулей Python: http://docs.python.org/install/index.html

Есть несколько советов, которые могут вам помочь.

person Please treat your mods well.    schedule 08.02.2011
comment
да, я посмотрел на это. Но проблема в том, что он описывает, как установить что-то, что поставляется в виде модуля Python (что-то, что нужно установить с помощью setup.py). Он не говорит вам, как установить какую-либо библиотеку, которая оставила .so вокруг. :( - person Osada Lakmal; 08.02.2011
comment
Вот несколько других идей dubroy.com/blog/ поэтому вы хотите установить пакет python. Похоже, что решением для вас может быть pip (pypi.python.org/pypi/pip) . - person Please treat your mods well.; 08.02.2011