我正在尝试安装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?找不到任何。
答案 0 :(得分:10)
通过查看该子目录中的python.py文件,我决定在执行waf到python3之前尝试设置环境var:
export PYTHON =“python3”
然后安装神秘地成功了......
答案 1 :(得分:4)
我正在使用Ubuntu Karmic,但安装了从源代码编译的python2.7,所以这是我在我的案例中找到的解决方法。虽然它可能会有所帮助,但请谨慎使用。
我发现一些讨论线程有类似的安装问题here
虽然它不是同一个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,我确实在python的/local/bin
中做了一些符号重新链接到我的python2.7,与python-config相同python2.7-config(如果从包管理器安装,则可能不需要这样做)
答案 2 :(得分:2)
这显然是pycairo安装程序中的一个错误,它试图弄清楚Python exe的位置(它应该做的是简单地使用它运行的Python exe)。
我试图找到它,但是这段代码使用了自己完全自定义的构建系统(它不是为什么会出现这种情况),代码以非常奇怪的方式布局,令人惊讶的是代码的主要部分隐藏( !)在一个名为.waf3-1.6.4-e3c1e08604b18a10567cfcd2d02eb6e6
的目录中,用我见过的一些最难以理解的Python代码编写。因此,我需要花费数小时来理解这段代码,并帮助你解决可能是一个微不足道的错误。
如果你真的需要这个库我建议你联系作者并很好地问他是否可以修复这个bug。