在virtualenv虚拟环境下使用pip

在virtualenv虚拟环境下使用pip

今天在virtualenv环境下使用pip安装django的时候出现pip权限不够的问题,[PS:又是权限的问题] 经过一番折腾,将正确姿势写一下。


首先创建virtualenv文件

$ virtualenv --python=python27 /path/to/source/../virtualenv

使用这个新创建的虚拟环境

$ source ../virtualenv/bin/activate

查看当前使用的python环境

(virtualenv)$ which python
/workspace/virtualenv/bin/python

好了,准备工作完成,此时我们要使用pip命令安装package(以django为例)

(virtualenv)$ pip install django==1.8.2
[...]
OSError: [Errno 13] 权限不够:'/local/code/workspace_superlists/virtualenv/lib/python2.7/site-packages/Django-1.8.2.dist-info'

一大堆错误之后,权限不够的报错来了。按照以往经验,sudo一下就可以了,于是试了一下

(virtualenv)$ sudo pip install django==1.8.2
Requirement already satisfied (use --upgrade to upgrade): django==1.8.2 in /usr/local/lib/python2.7/dist-packages
Cleaning up...

下面又说了,django1.8.2版本已经存在了,明明刚创建的虚拟环境,仔细一看发现原来sudo之后使用了/usr/local/lib/python2.7全局python下的pip命令,一脸懵逼

最后发现原来是所在virtualenv环境的文件夹赋予当前用户的权限不足:

(virtualenv)$ sudo chown tagor /path/to/workspace/virtualenv/
(virtualenv)$ pip install django==1.8.2

这下OK。

为了保存虚拟环境中所需的包列表,也为了以后能再次创建相同的虚拟环境,可以执行pip freeze命令,创建一个requirements.txt文件,把这个文件添加到仓库

(virtualenv)$ sudo touch ../sourse/requirement.txt
(virtualenv)$ pip freeze > ../sourse/requirement.txt
bash: sourse/requirment.txt: 权限不够

同样的方法

(virtualenv)$ sudo chown tagor /path/to/workspace/sourse/requirement.txt
(virtualenv)$ cat ../sourse/requirement.txt
Django==1.8.2

你可能感兴趣的:(Python,Django)