在virtualenv中安装libxml2和libxslt
在使用python的工作中,需要使用到libxml2和libxslt库。原来在实际环境中已经安装完成了,但是在virtualenv中还没有,现在正在整理virtualenv的环境。下面把在virtualenv环境的安装步骤记录下来,方便大家参考。
1.正常环境安装
在正常python环境中安装这两个库的方法比较简单,直接下载源码包,编译安装即可
具体安装步骤:
1、解压:$tar zxvf libxml2-2.7.2.tar.gz
2、进入解压后的安装目录:$cd libxml2-2.7.2
3、安装三部曲:1)$./configure
2)$make
3)$cd python
3)$python setup.py install
安装完毕。
非常的简单。
2.virtualenv环境安装
下面的方法就是在在虚拟环境中安装。
方法其实是大同小异,只是细微的差异。
2.1环境信息
环境信息:
- os:Linux systest 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
- python:Python 2.7.6
- GCC:gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1)
2.2安装包地址
下载两个库的安装包:
- libxml2:ftp://xmlsoft.org/libxml2/libxml2-2.7.2.tar.gz
- libxslt :http://ftp.acc.umu.se/pub/gnome/sources/libxslt/1.1/libxslt-1.1.22.tar.gz
2.3安装libxml2
先安装libxml2,解压。
激活虚拟环境,然后在激活的的虚拟环境中操作。
cd libxml2-2.7.2/
./configure --with-python=~/path/to/your/virtual/env/bin/python
make
cd python/
python setup.py install
libxml2在make之前,需要对Makefile做一些修改,详细见后面的安装过程中的问题。
cd libxslt-1.1.22/
./configure --with-python=~/path/to/your/virtual/env/bin/python
make
cd python/
sudo make install
第三步:安装完成验证
在虚拟环境中,输入python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import libxml2
>>> import libxslt
>>>
如果没有报错,说明安装成功。
3.安装过程问题汇总
3.1 libxslt编译依赖libxml2库出错:
/usr/bin/ld: /usr/local/lib/libxml2.a(entities.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libxml2.a: error adding symbols: Bad value
当时觉得奇怪,libxml2库已经安装好了,现在安装libxslt库,怎么报这个错误,在网上搜索下了错误信息,找到了这个文章(
http://blog.csdn.net/zangcf/article/details/21607855),说编译的时候没有加-fPIC参数。
就搜索了下这个参数的作用,-fPIC则表明使用地址无关代码。PIC:Position Independent Code.
觉得libxslt编译不过,是这个问题引起的,然后修改了libxml的编译参数,重新编译安装libxml,然后在编译libxslt,顺利通过。
解决方法:
在libxml的Makefile的下面的位置添加-fPIC参数。
CFLAGS = -g -O2 -pedantic -W -Wformat -Wunused -Wimplicit -Wreturn-type -Wswitch -Wcomment -Wtrigraphs -Wformat -Wchar-subscripts -Wunin itialized -Wparentheses -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototype s -Wnested-externs -Winline -Wredundant-decls -fPIC
-fPIC的说明参考:Linux共享对象之编译参数fPIC
4.一点疑问和想法
4.1 模块的版本号
安装完成后,在virtualenv的环境中查看安装是否成功,使用pip freeze命令来查看,能看到libxml2的版本号为libxml2-python==2.7.2,无法看到libxslt的版本号。env/lib/python2.7/site-packages的文件夹中,看到了libxml的egg信息,没有libxslt的egg信息。
我的个人猜想是:
libxml2库是通过python setup.py方式安装的,生成了完整的egg-info信息;而libxslt包是make install安装的,直接把对应的文件复制到了site-packages的目录下,没有生成egg-info信息。尝试着按照libxml的egg-info文件名称建立了一个文件
touch libxslt_python-1.1.22-py2.7.egg-info
然后在执行pip freeze命令,发现可以显示出libxslt的版本号信息了。同时观察了其他几个显示版本号的包,都有对应的egg信息。pip命令应该是通过egg-info来管理包的。
4.2 动态库的调用
libxml2和libxslt都是c语言完成,加了python的适配,在site-packages的文件夹中,有.a .so以及对应名称的.py文件,打开python文件查看,是python调用了对应的文件来实现的,充分发挥了Python的胶水特性。后续在需要的时候深入了解下python如何调用动态库的函数。
在virtualenv中安装libxml2和libxslt的更多相关文章
- [python] 2、python使用pyaudio进行录音,及其在python虚拟环境virtualenv中安装遇到的问题
1.pyaudio安装大背景 最近在做智能音箱,需要编写声音拾取代码,我先是百度两篇比较常见的用python进行录音的操作的文章: python写一个录音小程序:http://blog.csdn.ne ...
- windows下virtualenv中安装MySQL-python
先在正常的环境下安装 MySQL-python-1.2.3.win-amd64-py2.7.exe (用everything搜索一下就出来) 然后到 C:\Python27\Lib\site-pack ...
- 在virtualenv中安装NumPy、 SciPy、 scikit-learn、 matplotlib
首先要进入对应的虚拟环境 然后安装包 这里把安装源改成使用豆瓣的源进行下载 这样的话 下载速度会快很多 安装numpy包 pip install numpy -i https://pypi ...
- 在virtualenv中使用不同的Python版本
来源:百度SEO公司 我有一个目前使用python 2.5.4运行的Debian系统. 我正确安装了virtualenv,一切正常. 我是否可以将virtualenv与其他版本的Python一起使 ...
- 如何在virtualenv虚拟环境中安装mysql-python
接触过virtualenv后,想在这个虚拟环境中安装独立的开发环境.在安装MySQLdb时遇到错误 pc 09:09:30 File "/home/pc/work/VENV/py3/loca ...
- ubuntu 14.04中安装 ruby on rails 环境
环境:在win7 上Vmware虚拟机环境中安装的ubuntu 14.04 1. bundle install 时,报json错误可以看出是在安装nokogiri时遇到了问题,此时执行 sudo ap ...
- ubuntu 14.04中安装 ruby on rails 环境(填坑版) 呕血推荐
环境:在win7 上Vmware虚拟机环境中安装的ubuntu 14.04 开发相关: ruby 2.2.0 rails 4.2.0 sublime text 3 本文说明:所有的命令均在$ 之后,若 ...
- [django]在virtualenv下安装的第三方库的使用方法
在virtualenv下安装的第三方库,例如south, requests等,如果想在django中使用,需要先将库添加到settings.py的INSTALLED_APPS中, 以south, re ...
- Windows下Python,setuptools,pip,virtualenv的安装
Windows 2003平台,安装Python2.7.4,Python3.3,setuptools,pip,virtualenv. 安装Python2.7.4(当前版本是2.7.6),安装路径:C:\ ...
随机推荐
- python保留指定文件、删除目录其他文件的功能(1)
由于给客户的发布版本上客户改动了些代码和图片,我们这边给他们更新publish都是增量更新(开发提供更新指定的文件,我们提取出来给客户进行覆盖更新),但有时需要更新的文件较多导致不得不一个一个的进行查 ...
- 添加AdMob 错误记录
依照官方教程添加文件及其 frameWork后 发现运行报错 错误如下 Undefined symbols for architecture i386: "_OBJC_CLASS_$_ASI ...
- 使用ARM和VMSS创建自动扩展的web集群
在很多的商业场景中,用户的访问,峰值时间都是很难预测的,尤其是做一些市场推广活动和促销的时候,到底部署什么规模的web集群合适,这一直是个问题,部署过量会造成高成本和资源不必要的浪费,部署过少,如果到 ...
- 使用UEditor
在http://ueditor.baidu.com/website/上下载官方文件 文本编辑器的配置文件在ueditor.config.js 需要注意一下几点 首先 var URL = window. ...
- 新版TeamTalk部署教程(蓝狐)
http://www.bluefoxah.org/teamtalk/new_tt_deploy.html
- 《Programming WPF》翻译 第7章 2.图形
原文:<Programming WPF>翻译 第7章 2.图形 图形时绘图的基础,代表用户界面树的元素.WPF支持多种不同的形状,并为它们每一个都提供了元素类型. 7.2.1基本图形类 在 ...
- 无法在People Picker中选择用户
问题: 通过备份还原的方式(*.bak或者ContentDB备份还原)将某个网站集迁移到新的环境,无法在这个网站集中的任何站点选择用户,但是可以在其它网站集和管理中心选择用户. 我的环境是:Share ...
- ssh添加公钥
ssh-keygen生成公钥存储在文件: ~/.ssh/id_rsa.pub 如果ssh-add -l命令后没有一串长的字符串, 把私钥密钥对的ID(fingerPrint)加入ssh的认证代理ssh ...
- thinkpad t530 centos 6.4 有线网卡 设置
由于新装的系统没有安装网卡驱动,各大厂商的标准又不一样,有的电脑在linux下不用安装无线网卡驱动,而很不幸,我的电脑是ret的网卡,只能自行安装,在安装无线网卡的过程中使用到了chkconfig的命 ...
- dispatch_group_async
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. dispat ...