Как установить Pycairo для Python 3 на Ubuntu 10.04

Я пытаюсь установить Pycairo 1.10.0 для использования с моим Python 3.1 пользовательской сборки. тем не мение,

sudo /flower/bin/easy_install-3.1 pycairo

не удается с

XXX@XXXX:/adventures$ sudo /flower/bin/easy_install-3.1 pycairo
install_dir /flower/lib/python3.1/site-packages/
Searching for pycairo
Reading http://pypi.python.org/simple/pycairo/
Reading http://cairographics.org/pycairo
Best match: pycairo 1.10.0
Downloading http://cairographics.org/releases/pycairo-1.10.0.tar.bz2
Processing pycairo-1.10.0.tar.bz2
error: Couldn't find a setup script in /tmp/easy_install-zeG9HB/pycairo-1.10.0.tar.bz2

и действительно, нет setup.py в указанной загрузке; вместо этого INSTALL говорит:

Install Procedure
-----------------
$ ./waf --help     # shows available waf options
$ ./waf configure  # use --prefix and --libdir if necessary
                   # --prefix=/usr --libdir=/usr/lib64  for Fedora 64-bit
$ ./waf build
$ ./waf install

Use
$ python3 ./waf ...
if you have python2 and python3 installed, and the default is python 2.


Testing
-------
See test/README

я понимаю, что, сказав мне, что я должен

sudo /flower/bin/python3.1 ./waf configure --prefix=/flower/pycairo/

или похожие; однако это приводит к следующей ошибке:

  ./options()
Setting top to                           : /tmp/pycairo-1.10.0 
Setting out to                           : /tmp/pycairo-1.10.0/build_directory 
  ./configure()
Checking for 'gcc' (c compiler)          : ok 
Checking for program python              : /usr/bin/python 
python executable '/usr/bin/python' different from sys.executable '/flower/bin/python3.1'
Checking for python version              : (2, 6, 5, 'final', 0) 
The python version is too old, expecting (3, 1, 0)

поэтому я вошел в исходный код; по-видимому, нет никакого способа сказать это waf Дело в том, что целевая версия Python - это просто та, что запускается сама по себе, поэтому я покопался и дошел до этого:

Checking for 'gcc' (c compiler)          : ok 
Checking for program python              : /usr/bin/python 
#############293 /flower/bin/python3.1
Checking for python version              : (3, 1, 2, 'final', 0) 
Checking for library python3.1 in LIBDIR : yes 
Checking for program python3.1-config    : not found 
Checking for program python-config-3.1   : not found 
Checking for header Python.h             : Could not find the python development headers 
Checking for []                          : not found 
The configuration failed

у меня действительно есть файл /flower/bin/python3.1-config так что я не понимаю код Python, который делает все это, довольно трудно обрабатывать.

какие-либо предложения, как продолжить? Есть ли *.deb или подобное готово к pycairo + python 3? не мог найти ни одного.

3 ответа

Посмотрев на файл python.py в этом подкаталоге, я решил попробовать установить переменную окружения перед выполнением waf через python3:
export PYTHON = "python3"
И тогда установка загадочно удалась...

Я использую Ubuntu Karmic, но устанавливаю с python2.7, скомпилированным из исходного кода, так что это обходной путь, который я нашел в моем случае. Хотя это может быть полезно, но, пожалуйста, будьте осторожны.

Я нашел несколько обсуждений темы, которые имеют подобные проблемы установки здесь

Хотя это не та же версия Python, есть некоторые флаги, которые вы можете установить для waf.

Я прошел эту часть Python.h после использования следующей команды

LDFLAGS="-lm -ldl -lutil" ./waf configure

Как я скомпилировал из исходного кода python2.7, мне нужно перенаправить пути с CFLAGS. Последняя команда выглядит так:

CFLAGS="-l/usr/local/include/python2.7 -l/usr/local/bin" LDFLAGS="-lm -ldl -lutil" ./waf configure

Я понятия не имею, как работают LDFLAGS, поэтому используйте с осторожностью.

В качестве альтернативы (опасный метод), если вы не хотите устанавливать CFLAGS, я сделал несколько символических пересылок в /local/bin python для моего python2.7, то же самое с python-config для python2.7-config (если вы установили из диспетчера пакетов, вам может не понадобиться это делать)

Это явно ошибка в установщике pycairo, когда он пытается выяснить, где находится исполняемый файл Python (когда он должен просто использовать исполняемый файл Python, с которым он запускается).

Я пытался найти его, но этот код использует свою собственную полностью настраиваемую систему сборки (неочевидно почему), и код выложен очень странным образом, удивительно, что основные части кода скрыты (!) В каталоге с именем .waf3-1.6.4-e3c1e08604b18a10567cfcd2d02eb6e6 и написано в одном из самых нечитаемых кодов Python, которые я когда-либо видел. Таким образом, мне понадобятся часы, чтобы понять этот код и помочь вам с тем, что, вероятно, является тривиальной ошибкой.

Если вам действительно нужна эта библиотека, я предлагаю вам связаться с автором и спросить его, может ли он исправить ошибку.

Другие вопросы по тегам