Linux 为什么不';我有权在virtualenv中安装psycopg2

Linux 为什么不';我有权在virtualenv中安装psycopg2,linux,ubuntu,pip,psycopg2,Linux,Ubuntu,Pip,Psycopg2,我的目标是提供一个hello world Django应用程序,该应用程序在运行Ubuntu的EC2实例上使用postgres。我通过ssh登录并克隆了一个包含Django项目的git repo,其requirements.txt为: 我创建了一个virtualenv,然后,当我运行(ec2\u部署\u测试)时ubuntu@ip-172-31-22-100:~/ec2部署测试$pip安装-r requirements.txt,引发此异常: 收集psycopg2==2.6(来自-r require

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

我创建了一个virtualenv,然后,当我运行
(ec2\u部署\u测试)时ubuntu@ip-172-31-22-100:~/ec2部署测试$pip安装-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: 不安全平台警告:真正的SSLContext对象不可用。 这会阻止urllib3正确配置SSL,并可能导致 某些SSL连接可能会失败。有关详细信息,请参阅 . 不安全平台警告下载psycopg2-2.6.tar.gz(367kB) 100% |████████████████████████████████| 368kB 785kB/s收集包的构建控制盘:psycopg2异常:回溯(most) 最近调用(最后一次):文件 “/home/ubuntu/Envs/ec2_deploy_test/local/lib/python2.7/site packages/pip/basecommand.py”, 第223行,主 status=self.run(options,args)文件“/home/ubuntu/Envs/ec2\u deploy\u 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行,内部版本 确保在确保目录中的第70行确保目录(output目录)文件“/home/ubuntu/Envs/ec2\u deploy\u test/local/lib/python2.7/site packages/pip/utils/init.py” os.makedirs(path)文件“/home/ubuntu/Envs/ec2_deploy_test/lib/python2.7/os.py”,第150行,在 马克迪 makedirs(head,mode)文件“/home/ubuntu/Envs/ec2_deploy_test/lib/python2.7/os.py”,第150行,在 马克迪 makedirs(head,mode)文件“/home/ubuntu/Envs/ec2_deploy_test/lib/python2.7/os.py”,第150行,在 马克迪 makedirs(head,mode)文件“/home/ubuntu/Envs/ec2_deploy_test/lib/python2.7/os.py”,第157行,在 马克迪 mkdir(名称,模式)OSError:[Errno 13]权限被拒绝:'/home/ubuntu/.cache/pip/wheels/ab'

然后我运行了
(ec2\u部署\u测试)ubuntu@ip-172-31-22-100:~/ec2部署测试$sudo pip安装-r requirements.txt
并成功安装了psycopg2


为什么我需要root权限才能在虚拟环境中安装python包?一般来说,我对Linux和系统管理员都是新手,所以欢迎大家提出建议。提前感谢。

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


一个建议-在没有实际需要的情况下,尽量不要从root启动应用程序。最可能的情况是,您无权访问的目录是由某个具有根权限的应用程序创建的,现在所有权混乱了。

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

它的Python3可能与权限或根无关,如果您尝试了Angles建议,但它不起作用。您需要安装python3开发人员。。。或者只是坚持使用蟒蛇2。希望有帮助


这里有一个链接:

id如果你使用sudo,它实际上并没有在你的virtualenv中安装它。另外,如果您将virtualenv创建为root用户,那么用户将没有安装所有软件包的权限。我不认为您确实存在同样的问题。您链接的问题与此处的错误不同。在那里找不到模块,但这里的错误是«权限被拒绝»。
Django==1.8.2  
djangorestframework==3.1.2  
psycopg2==2.6