我的目标是为运行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的新手,所以欢迎所有的建议。提前谢谢。
答案 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