首页 文章

为什么我没有权限在virtualenv中安装psycopg2

提问于
浏览
6

我的目标是提供一个在运行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行,主状态= self.run(options,args)文件“/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)中文件“/home/ubuntu/Envs/ec2_deploy_test/local/lib/python2.7/site-packages/pip/utils/init.py”,第70行,在ensure_dir os.makedirs(path)文件“/ 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行,在makedirs makedirs(头,模式)文件“/home/ubuntu/Envs/ec2_deploy_test/lib/python2.7/os.py”,第150行,在makedirs makedirs(头,模式)文件“/ home / ubuntu / envs / ec2_deploy_test / lib / python2.7 / os.py“,第157行,在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 回答

  • 1

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

    建议 - 尝试不在没有真正需要的情况下从root用户启动应用程序 . 最有可能的是,没有访问权限的目录是由一些使用root权限运行的应用程序创建的 - 现在所有权混乱了 .

  • 6

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

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

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

相关问题