virtualenv简介以及一个比较折腾的scrapy安装方法

叁叁肆2018-09-19 09:20

本文来自网易云社区


作者:沈高峰

virtualenv + pip 安装python软件包是一种非常好的选择,在大部分情况下安装python软件包是不需要求助于sa的。

使用自己的一个工作副本也是写python的一个好习惯。

基本使用方式有下面几步:

  • 1.先准备好virtualenv的环境

    mkdir ~/dev
    virturalenv ~/dev
  • 2.激活一下当前的virtualenv

    source ~/dev/bin/activate
  • 3.然后就可以用pip安装软件包了,所有软件包都会安装在当前virtualenv下

    pip install XXX

当需lib依赖的时候,上面的方法就不奏效了,比如,装scrapy的时候,流程可以变成这样了。

  1. pip install scrapy

  2. 提示 xmlversion.h  No such file or directory

  3. google/bing/baidu 一通,原来是缺少libxml2-dev 包

  4. zaime上提交sa任务

  5. sa装完 libxml2-dev

  6. 继续pip install scrapy

  7. 提示  xslt-config: not found

  8. google/bing/baidu 一通,原来是缺少libxslt1-dev  包

  9. 提交sa任务

  10. 。。。

如何不找sa,安装好这些库呢,编译用的工具链sa都装好了。

virtualenv 生成的目录~/dev结构跟 / 基本一样,随便想想,在 ./configure 的时候把 --prefix 设置成~/dev应该就可以了。

于是开始折腾

先设置好环境变量,让gcc和ld能找到include 和lib 文件夹

export LD_LIBRARY_PATH=~/dev/lib
export C_INCLUDE_PATH=~/dev/include
export LIBRARY_PATH=~/dev/lib

其实,在激活virtualenv的时候,activate脚本已经修改了2个环境变量了,env一下就可以看到了

PATH=/home/shen/dev/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/gamesPS1=(dev)\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

scrapy依赖3个软件包libxml2 libxslt libffi ,下载他们

wget  ftp://xmlsoft.org/libxml2/libxml2-2.9.2.tar.gzwget  ftp://xmlsoft.org/libxml2/libxslt-git-snapshot.tar.gzwget  ftp://sourceware.org/pub/libffi/libffi-3.2.tar.gz

依次解压,cd到相应目录下

./configure --prefix=~/dev && make && make install

有2个小坑,

  1. libxml2 默认把include文件夹放到 ~/dev/include/libxml2 下,移动目录或者修改环境变量export C_INCLUDE_PATH=~/dev/include/libxml2:$C_INCLUDE_PATH

  2. libffi 把 include 文件夹放到 ~/dev/lib/libffi-3.2/include 下,解决方法跟上面一样

之后就可以pip install scrapy了

好吧,折腾完了,发现好像也没啥收获。

其实,不想折腾也简单,提交一个sa任务,安装3个包就可以了。

再偷懒一点,直接安装python-scrapy 就可以了,最新的debian stable 下的scrapy已经是 0.24.2 了,不算太旧。不过貌似很多机器sa还没升级到最新的stable版本。

其实和配置个交叉编译环境或者装LFS有些类似,比那个更简单一些。


网易云免费体验馆,0成本体验20+款云产品!

更多网易研发、产品、运营经验分享请访问网易云社区


相关文章:
【推荐】 JVM锁实现探究2:synchronized深探