【问题标题】:Why my pip installations requires python -m install --user?为什么我的 pip 安装需要 python -m install --user?
【发布时间】:2020-03-08 21:33:06
【问题描述】:

我在虚拟环境中运行它。 当我输入时:

pip install django

我明白了:

错误:由于 EnvironmentError 无法安装软件包:[Errno 13]权限被拒绝:/home/ENV/env/lib/python3.5/site-packages/pytz 考虑使用 --user 选项或检查权限。

为了让它工作,我实际上需要输入:

python -m pip install --user django

为什么?

【问题讨论】:

  • 你用的是window还是Mac和Linux?
  • 如果您使用的是 windows 窗口,请不要让 python 安装 django
  • 如果你给我操作系统名我会给你答案
  • 这个问题也有他的重要性,因为python -m这里是指定解释器的,千万不能忽视,如果你安装了多个版本的python,要跟踪pip是哪个python版本bound to 是一个 PITA imo,因此 python -m 在这种情况下,您确定它是绑定到将执行的 python 的 pip。

标签: python python-3.x pip


【解决方案1】:

让我们打破您在第一个命令中添加的两个语句: python -m install --user django

  • python -m:允许使用 Python 模块命名空间定位模块以作为脚本执行。激励示例是标准库模块,例如 pdb 和 profile。见PEP 338

  • --user :默认情况下 pip 将 Python 包安装到需要 root 权限的系统目录,以避免使用 sudo pip install (顺便不推荐)使用此标志在您的家中制作 pip 安装包目录,而不需要任何特殊权限。

附带说明,如果您安装了多个 Python 版本,则跟踪 pip 绑定到的 Python 版本可以是 PITA,因此 python -m 在这种情况下,您确定它是绑定到的 pip被调用的 Python 将被执行。

【讨论】:

    【解决方案2】:

    这是因为您试图将软件包安装到您没有写入权限的系统文件夹中。并且选项--user 允许将其安装到您拥有权限的用户文件夹(https://github.com/googlesamples/assistant-sdk-python/issues/236)。

    【讨论】:

      【解决方案3】:

      错误基本上表明您没有权限将文件写入您的机器,所以如果您是 root 用户(或管理员),您可以随时安装 python 包

      sudo pip install django

      或者

      pip install --user django

      --user 在你的主目录中创建 pip 安装包,这不需要任何特殊权限。

      【讨论】:

        猜你喜欢
        • 2017-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多