[python] установка модулей

Serab

Я вот не питон-разраб, но есть вот проект, которому требуется питон.
./configure пишет, что отсутствует модуль distutils. Как мне без рута сделать так, чтобы он его подхватил? Желательно, конечно, не ставить свой питон с блэкджэком и шлюхами, а просто положить этот модуль (где его кстати взять отдельно от мух?) в какое-нибудь место, где питон (и autoconf) его найдет.
Помогите, плз!

dangerr

Модуль distutils по идее должен вместе с самим питоном поставиться - это стандартный модуль.

$ equery belongs /usr/lib/python2.7/distutils/__init__.py
* Searching for /usr/lib/python2.7/distutils/__init__.py ...
dev-lang/python-2.7.1-r1 (/usr/lib/python2.7/distutils/__init__.py)

набери в консольке python и в интерактивном режиме выполни 'import distutils'
Если не выдаст exception, значит он есть.

dangerr

А вообще для установки всяких модулей, не входящих в дефолтную поставку, есть pypi (python package index это типа репозитория. Через easy_install или pip можно оттуда ставить. Только если это делать под рутом - это замусоривать систему в обход пакетного менеджера, либо ставить в префикс и добавлять его в PYTHONPATH, либо в virtualenv. Самым кошерным способом в случае gentoo будет установить из оверлея python g-pypi и генерить с помощью него ebuildы для любого пакета в pypi и уже ставить из них.

Phoenix

набери
python -V
для начала
2.5 наверно у тебя или ещё более раннее.

dangerr

У меня-то? :o У меня 2.7

Phoenix

упс. у тс конечно.

Serab

python 2.6.6, вообще основная версия, под которой это все дело отлаживалось (не мной :) )
Рута нету, да и вообще большой кошерности не надо, как раз напротив, надо заставить работать как можно быстрее.

dangerr

Тогда easy_install --prefix
Только distutils там нет, это стандартный модуль.

Serab

sh setuptools-0.6c11-py2.6.egg --prefix=~
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/frolovas/setuptools-0.6c11-py2.6.egg/setuptools/__init__.py", line 2, in <module>
File "/home/frolovas/setuptools-0.6c11-py2.6.egg/setuptools/extension.py", line 1, in <module>
ImportError: No module named distutils.core

conv3rsje

отсутствует модуль distutils
Бывает и такое. Я решал это выдиранием distutils из аналогичной версии питона и установкой её в локальный PYTHONPATH через easy_install (pip тоже должен прокатить).
Правда, там еще немного пришлось подправить его, ибо многих других важных частей тоже не было.
Если нужно, могу попробовать найти то что делал.

dangerr

Какой-то у тебя странный питон :)
КЖ. Как же режут галаза белые картинки, когда тема везде тёмная...

Serab

так там и easy_install нету, вон, чтобы его поставить, он просит distutils :grin: :banghead:

conv3rsje

так там и easy_install нету
Сначала нету, ставится distutils в лоб, потом уже доставляется easy_install

Serab

Какой-то у тебя странный питон
http://supercomputer.susu.ru/computers/skif_avrora/ :(

Serab

а мне может кроме distutils и не надо ничего :grin:
Ладно, т.е. мне надо найти distutils от 2.6 питона и скопировать куда-нибудь в PYTHONPATH? дальше попробовать поставить setuptools?

pilot

http://docs.python.org/install/index.html — тут ответов нет?

Serab

там про установку при помощи distutils, а у меня вариант какого-то урезанного питона, в котором нету distutils.
Но мне вон в приватах помог, я смог-таки решить проблему с distutils. Но теперь новый косяк.
./configure пишет:
 checking for a Python interpreter with version >= 2.3... python
checking for python... /usr/bin/python
checking for python version... 2.6
checking for python platform... linux2
checking for python script directory... ${prefix}/lib/python2.6/site-packages
checking for python extension module directory... ${exec_prefix}/lib/python2.6/site-packages
checking for the distutils Python package... yes
checking for Python include path... -I/usr/include/python2.6
checking for Python library path... -L/usr/lib64 -lpython2.6
checking for Python site-packages path... /usr/lib/python2.6/site-packages
checking python extra libraries... -lpthread -ldl -lutil
checking python extra linking flags... -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions
checking consistency of all components of python development environment... no
configure: error:
Could not link test program to Python. Maybe the main Python library has been
installed in some non-standard library path. If so, pass it to configure,
via the LDFLAGS environment variable.
Example: ./configure LDFLAGS="-L/usr/non-standard-path/python/lib"
============================================================================
ERROR!
You probably have to install the development version of the Python package
for your distribution. The exact name of this package varies among them.
============================================================================

в /usr/lib64 есть только libpython2.6.so.1.0
Я предположил, что он хочет имя по дефолту и сделал у себя в ~/python/lib симлинк ln -s /usr/lib/libpython2.6.so.1.0 libpython2.6.so, передал ему LDFLAGS как он и просит, та же фигня.
Еще заметил, что в /usr/include нету-таки каталога python2.6 и вообще ничего про python, интересно, почему он вообще смог скомпилить этот тест, а только слинковать не смог.
Похоже, что на этом скифе стоит не-девелоперская версия питона.
Есть тут какие-нибудь идеи?

conv3rsje

Возьми у себя такую же версию петона, собери для неё расширения, закатай их в яйцо и поставь свежевыпеченным easy_install себе в ~/python.
Задолбаешся -dev ставить туда

Serab

какие расширения? Мне нужны includЫ и понять, почему он не находит libpython. Хотя это уже вопрос к autoconf'у похоже (второе).

conv3rsje

Те, которые ты пытаешся скомпилировать.
python-dev в основном нужен для них, посему у меня есть предположение что тебе они и нужны
Есть еще вероятность что пытается заембедить питон, но это уже более редкий случай
Вообще, чтоб не гадать, что компилируешь?

Serab

Есть еще вероятность что пытается заембедить питон, но это уже более редкий случай
Там некая хреновина, которая из кода на C++ подгружает питон, заставляет его выполнять какие-то вызовы обратно в C++-код (по крайней мере питоновский код подгружает so'шки, в которых есть undefined символы, описанные в основном executable типа того. Мало информации? Я сам там не разобрался толком.

conv3rsje

Достаточно.
Но в любом случае может прокатить собрать у себя и забросить туда уже готовое

Serab

Забил нафиг на все, поставил свой питон :)
Вроде работает.
Оставить комментарий
Имя или ник:
Комментарий: