【问题标题】:Unable to install pip with "python get-pip.py --user"无法使用“python get-pip.py --user”安装 pip
【发布时间】:2019-06-08 07:06:49
【问题描述】:

我无法使用python setup.py --user 安装 pip,而且我认为我的 python 安装通常有点笨拙。

我希望能够在我的用户上使用不带 sudo 的 pip(在这种情况下为vagrant)。我读过的所有内容都表明上述内容应该有效,但它只是拒绝。

如果我使用sudo python setup.py --user,那么它会正确安装,但同样,由于安装到用户目录,因此不需要 sudo。

python setup.py --user

Traceback (most recent call last):
  File "setup.py", line 6, in <module>
    from setuptools import find_packages, setup
  File "/home/vagrant/.local/lib/python3.6/site-packages/setuptools/__init__.py", line 16, in <module>
    import setuptools.version
  File "/home/vagrant/.local/lib/python3.6/site-packages/setuptools/version.py", line 1, in <module>
    import pkg_resources
  File "/home/vagrant/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3126, in <module>
    @_call_aside
  File "/home/vagrant/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3110, in _call_aside
    f(*args, **kwargs)
  File "/home/vagrant/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3139, in    _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/home/vagrant/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 572, in _build_master
    ws = cls()
  File "/home/vagrant/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 565, in __init__
    self.add_entry(entry)
  File "/home/vagrant/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 621, in add_entry
    for dist in find_distributions(entry, True):
  File "/home/vagrant/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 1968, in find_on_path
    for dist in factory(fullpath):
  File "/home/vagrant/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2030, in distributions_from_metadata

    if len(os.listdir(path)) == 0:
PermissionError: [Errno 13] Permission denied: '/usr/local/lib/python3.6/dist-packages/websocket_client-0.54.0.dist-info'

其他信息...

python -V
Python 3.6.7

which python
/usr/bin/python

另外,我知道我可以使用 venv 来实现我想要的,但关键是它应该可以工作,但不能,这 a) 让我无所适从,b) 表明某些事情很简单我的设置有问题。

【问题讨论】:

  • 你知道你是否使用代理上网吗?
  • 我愿意,但我不是。
  • 您使用的是哪个操作系统?在 Debian 和 Ubuntu 中,您可以通过运行“sudo apt-get install python-pip”轻松安装 pip
  • @MEdwin - 我宁愿不使用 apt,因为它几乎总是过时的。
  • 我从日志中的猜测:您在过去的某个时间安装了包websocket_clientsudo pip。现在 pip 想要更新它(它在哪里,即使您请求 --user),因此是 dist-info 后缀。暂定修复:手动 sudo remove 来自 /usr/local/lib/python3.6/dist-packages/websocket_client-0.54.0.dist-info 的包。冲洗并重复类似问题的包装。然后,给我们echo $PYTHONPATH的结果。然后尝试python get-pip.py --user 的事情。

标签: python ubuntu installation pip


【解决方案1】:

在我看来,好像您正在尝试使用非 root 用户将东西安装到系统 Python,因此无权编辑系统站点包中的东西。请您运行 whoami 并查看您以哪个用户身份登录,如果您以非 root 用户身份登录,您应该使用 sudo 将软件包安装到系统的 Python 中,例如sudo pip install my_package.

如果您不想将包安装到系统的 Python 站点包目录,那么您可能应该在 virtualenv 中操作,这为您的项目提供了一个独立的 Python 环境,并且可以作为任何用户在他们家中创建目录。

要安装 virtualenv:

sudo pip install virtualenv

然后以用户身份创建一个新的virtualenv:

virtualenv my_env

假设/激活虚拟环境:

source my_env/bin/activate

现在您可以使用 pip 作为您的用户将软件包安装到您的 Python virtualenv 中:

pip install my_package

这为您提供了一个完全独立的 Python 环境,该环境以您的用户身份运行,与系统 Python 安装无关。希望这对您有所帮助,如果我误解了您的用例,请发表评论,我会相应地更新我的答案。

【讨论】:

  • 这个问题是关于无法安装 pip 的,你的回答假设 pip 已经可以工作了。另外,我确实提到我知道我可以使用 venv 来做我想要做的事情,但是这里还有另一个问题,因为python setup.py --user 应该将 pip 安装到/home/${USER}/.local/bin 目录。
  • 在这种情况下,我可能会使用 ensurepip 模块,它位于大多数现代 Python 包中......例如python -m ensurepip,这应该可以提供一个很好的、理智的 PIP 安装以供使用。
  • /usr/bin/python: No module named ensurepip
  • 我可以看到您使用的是 Python 3.6,请告诉我,您是从操作系统包安装的吗?如果是,您使用的是哪个操作系统?对我来说...python3.6 -m ensurepip Requirement already satisfied: setuptools in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages Requirement already satisfied: pip in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages
  • 它是 Ubuntu 18.04 (Bionic x64 LTS),从 Ubuntu 16.04 (Xenial x64 LTS) 升级而来。不知道我最初是如何安装 Python 3.6 的。它没有与 16.04 捆绑在一起,我不确定它是否在执行操作系统升级时被安装。所以我会在 16.04 中通过 apt 想象,但我真的不能肯定。
猜你喜欢
  • 1970-01-01
  • 2017-04-04
  • 1970-01-01
  • 2019-01-05
  • 1970-01-01
  • 2021-04-04
  • 1970-01-01
  • 1970-01-01
  • 2020-12-26
相关资源
最近更新 更多