【问题标题】:Why don't I have permission to install psycopg2 in a virtualenv为什么我没有权限在 virtualenv 中安装 psycopg2
【发布时间】:2015-08-12 21:14:53
【问题描述】:

我的目标是在运行 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 例外:Traceback(大多数 最近通话最后):文件 “/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_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(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(name, mode) OSError: [Errno 13] Permission denied: '/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 和系统管理员的新手,所以欢迎所有建议。提前致谢。

【问题讨论】:

  • id 你做了 sudo,它实际上并没有在你的 virtualenv 中安装它。此外,如果您以 root 身份创建 virtualenv,则用户将无权安装所有软件包

标签: linux ubuntu pip psycopg2


【解决方案1】:

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

一个建议——在没有真正需要的情况下,尽量不要从 root 启动应用程序。很可能您无权访问的目录是由某些以 root 权限运行的应用程序创建的——现在所有权混乱了。

【讨论】:

    【解决方案2】:

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

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

    这是链接:Trouble with psycopg2 in virtualenv python3 for use with Django

    【讨论】:

    • 我不认为你确实有同样的问题。您链接的问题的错误与此处的错误不同。那里找不到模块,但这里的错误是«Permission denied»。
    猜你喜欢
    • 2015-07-20
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 2015-01-27
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多