如何避免与virtualenv一起使用pip时的“权限被拒绝”
我尝试在Ubuntu机器上的虚拟环境中使用pip部署Python包,但是遇到与权限相关的问题。 例如: 
 (TestVirtualEnv)test@testServer:~$ pip install markdown2 
终止:
错误:无法创build'/home/test/virtualenvs/TestVirtualEnv/lib/python3.3/site-packages/markdown2.py':权限被拒绝
 我不能sudo ,因为它将全局安装包,而不是在虚拟环境中。 我chown编辑site-packages ;  ls只显示与easy_install , pip和setuptools相关的目录,而与Markdown没有关系。 
 如何使用pip在虚拟环境中部署软件包而不会遇到与权限相关的错误? 
 当您创buildvirtualenv作为sudo ,然后在virtualenv不使用sudo操作时,可能会发生virtualenv权限问题。 
 正如在你的问题的评论中发现的,这里的解决scheme是创build没有sudo的virtualenv ,能够在没有sudo情况下工作 (特别是写入)。 
解:
如果您以root身份创build了virtualenv,请运行以下命令:
 sudo chown -R your_username:your_username path/to/virtuaelenv/ 
这可能会解决您的问题。
干杯
 我没有使用sudo创build我的virtualenv。 所以塞巴斯蒂安的回答并不适用于我。 我的项目被称为utils 。 我检查了utils目录,看到这个: 
 -rw-r--r-- 1 macuser staff 983 6 Jan 15:17 README.md drwxr-xr-x 6 root staff 204 6 Jan 14:36 utils.egg-info -rw-r--r-- 1 macuser staff 31 6 Jan 15:09 requirements.txt 
 正如你所看到的, utils.egg-info属于root而不是macuser 。 这就是为什么它给了我permission denied错误。 我也必须删除/Users/macuser/.virtualenvs/armoury/lib/python2.7/site-packages/utils.egg-link因为它也是由root创build的。 我做了pip install -e . 除去后,再次工作。 
 在我的情况下,我正在使用mkvirtualenv ,但没有告诉我将要使用python3。 我得到这个错误: 
 mkvirtualenv hug pip3 install hug -U .... error: could not create '/usr/lib/python3.4/site-packages': Permission denied 
它指定python3后工作:
 mkvirtualenv --python=/usr/bin/python3 hug pip3 install hug -U 
在使用pip之前,您没有激活虚拟环境 。
尝试一下:
 $(your venv path) . bin/activate 
然后在主文件夹上使用pip -r requirements.txt
如果使用sudo创buildvirtualenv,则使用root权限创build该目录。因此,当您尝试使用非sudo用户安装软件包时,您将无权安装该软件包。 所以总是在没有sudo的情况下创buildvirtualenv,而不安装sudo。
您还可以将安装在全局Python中的软件包复制到virtualenv。
 cp -r /lib/python/site-packages/* virtualenv/lib/python/site-packages/