VirtualEnv 安装和使用

VirtualEnv用来创建隔离的Python环境的开源工具。
Python使用的人多了背后有个庞大的开源社区支持,但是有个缺点就是每个包的质量都是参差不齐, 如果我们想测试安装每个包,最后会堆积成一个庞大而复杂的第三方依赖。VirtualEnv就是为了解决这个问题而生的,可以用于在一台机器上创建多个独立的python运行环境

安装

可以使用easy_install和pip 安装,pip是一个安装python库很方便的东西,类似yum,pip search pip install,如果没wget的话,就用curl -O 另外也可以考虑用easy_install代替pip

安装easy_install
1
2
$ wget http://python-distribute.org/distribute_setup.py
$ sudo python distribute_setup.py
安装pip
1
sudo easy_install pip
安装VirtualEnv
1
2
方法一:sudo easy_install virtualenv
方法二:pip install virtualenv

环境搭建

创建


viratualProject 就是我们创建的虚拟环境的目录了,该目录在安装就默认安装了本机相同的python版本了,并且还会有pip和easy_install工具,这时候你就有一个赶紧的python虚拟环境了

activate&deactivate


虚拟环境需要激活,就是所谓的启动,在安装目录下bin中有个activate就是用作启动使用的,有activate当然就有deactivate,关闭虚拟环境


激活之后在看python所指向的路劲与未激活之前的区别

1
2
3
4
5
➜  VirtualProject  which python
/usr/bin/python

(VirtualProject)➜ VirtualProject which python
/Users/leehu/Documents/Python/VirtualProject/bin/python

使用

OK, 到这里就可以在虚拟环境中安装你需要的第三方开源库了。
Scrapy是一个Python的知名高层次的屏幕抓取和web抓取框架,我经常会使用到他.

安装

1
pip install scrapy

在安装的过程中我遇到了错误

1
2
3
4
5
build/temp.macosx-10.11-intel-2.7/_openssl.c:423:10: fatal error: 'openssl/aes.h' file not found
#include <openssl/aes.h>
^
1 error generated.
error: command 'cc' failed with exit status 1

这个错误的解决办法

  1. install openssl
1
brew install openssl

2.添加下面环境变量到你的~/.bashrc(如果是zsh用户是~/.zshrc)文件中,然后source一下,可以通过echo $ARCHFLAGS检查是否添加成功

1
2
3
4
export ARCHFLAGS="-arch x86_64"
export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CFLAGS="-I/usr/local/opt/openssl/include"
export PATH="/usr/local/opt/openssl/bin:$PATH"

安装成功后,虚拟环境bin中就多了scrapy命令执行工具。

1
2
3
4
5
6
7
8
9
(scrapies)➜  scrapies cd bin
(scrapies)➜ bin ls
activate easy_install pyhtmlizer tap2rpm
activate.csh easy_install-2.7 pyjade tkconch
activate.fish mailmail python trial
activate_this.py manhole python2 twistd
cftp pip python2.7 wheel
ckeygen pip2 scrapy
conch pip2.7 tap2deb

新建scrapy项目,和在全局新建scrapy项目不同,需要使用虚拟环境中的scrapy指向的目录来启动一个新项目,

1
(scrapies)➜  scrapies bin/scrapy startproject pic

如果你全局本地有一个scrapy直接按照官网命令创建scrapy爬虫会报如下的错误,如果没有就不会报这个错误

1
2
3
4
5
6
7
8
9
scrapies)➜  scrapies scrapy startproject pic
Traceback (most recent call last):
File "/usr/local/bin/scrapy", line 5, in <module>
from pkg_resources import load_entry_point
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 2797, in <module>
parse_requirements(__requires__), Environment()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 576, in resolve
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: six>=1.5.2