Как установить 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, которые я когда-либо видел. Таким образом, мне понадобятся часы, чтобы понять этот код и помочь вам с тем, что, вероятно, является тривиальной ошибкой.
Если вам действительно нужна эта библиотека, я предлагаю вам связаться с автором и спросить его, может ли он исправить ошибку.