как установить Pycairo для Python 3 на Ubuntu 10.04 - PullRequest
5 голосов
/ 04 июня 2011

Я пытаюсь установить 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 ]

10 голосов
/ 17 июля 2011

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

4 голосов
/ 25 июля 2011

Я использую 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 (если вы установили из диспетчера пакетов, вам может не потребоваться это сделать)

2 голосов
/ 04 июня 2011

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

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

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

...