为什么我没有权限在virtualenv

时间:2015-05-29 21:12:25

标签: linux ubuntu pip psycopg2

我的目标是为运行Ubuntu的EC2实例上使用postgres的hello world Django应用程序提供服务。我通过ssh登录并使用此 requirements.txt 克隆了一个包含Django项目的git repo:

Django==1.8.2  
djangorestframework==3.1.2  
psycopg2==2.6

我创建了一个virtualenv然后,当我运行 (ec2_deploy_test)ubuntu@ip-172-31-22-100:~/ec2-deploy-test$ pip install -r requirements.txt 时,抛出了这个异常:

  

收集psycopg2 == 2.6(来自-r requirements.txt(第3行))   /home/ubuntu/Envs/ec2_deploy_test/local/lib/python2.7/site-packages/pip/vendor/requests/packages/urllib3/util/ssl.py:90:   InsecurePlatformWarning:真正的SSLContext对象不可用。   这可以防止urllib3适当地配置SSL并可能导致   某些SSL连接失败。有关更多信息,请参阅   https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning。   InsecurePlatformWarning正在下载psycopg2-2.6.tar.gz(367kB)       100%|████████████████████████████████| 368kB 785kB / s收集包装的建筑轮子:psycopg2例外:追溯(大多数   最近的呼叫最后):文件   " /home/ubuntu/Envs/ec2_deploy_test/local/lib/python2.7/site-packages/pip/basecommand.py" ;,   第223行,主要       status = self.run(options,args)File" /home/ubuntu/Envs/ec2_deploy_test/local/lib/python2.7/site-packages/pip/commands/install.py",   第291行,在运行中       wb.build(autobuilding = True)文件" /home/ubuntu/Envs/ec2_deploy_test/local/lib/python2.7/site-packages/pip/wheel.py",   第753行,在构建中       ensure_dir(output_dir)File" /home/ubuntu/Envs/ec2_deploy_test/local/lib/python2.7/site-packages/pip/utils/ init .py",第70行,在ensure_dir中       os.makedirs(path)File" /home/ubuntu/Envs/ec2_deploy_test/lib/python2.7/os.py" ;,第150行,在   makedirs       makedirs(head,mode)文件" /home/ubuntu/Envs/ec2_deploy_test/lib/python2.7/os.py" ;,第150行,in   makedirs       makedirs(head,mode)文件" /home/ubuntu/Envs/ec2_deploy_test/lib/python2.7/os.py" ;,第150行,in   makedirs       makedirs(head,mode)文件" /home/ubuntu/Envs/ec2_deploy_test/lib/python2.7/os.py" ;,第157行,in   makedirs       mkdir(名称,模式)OSError:[Errno 13]权限被拒绝:' /home/ubuntu/.cache/pip/wheels/ab'

然后我成功安装了 (ec2_deploy_test)ubuntu@ip-172-31-22-100:~/ec2-deploy-test$ sudo pip install -r requirements.txt 和psycopg2。

为什么我需要root权限才能在我的虚拟环境中安装python包?我是Linux和sysadmin的新手,所以欢迎所有的建议。提前谢谢。

2 个答案:

答案 0 :(得分:6)

由于某种原因,您无权在/home/ubuntu/.cache/pip/wheels/ab内创建目录。通常这个问题不应该出现;无论如何,因为它发生了,只需递归地更改.cache目录的权限。我想问题是所有权问题,所以请尝试启动命令sudo chown -R <USERNAME> ~/.cache/pip,其中<USERNAME>应该是您用户的名称。

建议 - 尽量不要从 root 启动应用程序而不需要真正的需要。最有可能的是,没有访问权限的目录是由一些使用root权限运行的应用程序创建的 - 现在所有权已经搞乱了。

答案 1 :(得分:1)

我假设您使用了virtualenv -p /usr/bin/python3.4 env, 我遇到了同样的问题

它的python 3并且可能与权限或root无关,如果您尝试了Angles推荐并且它不起作用。你需要安装python3-dev ...或者只是坚持使用python2。希望有所帮助

继承人:Trouble with psycopg2 in virtualenv python3 for use with Django