python-pip在Arch Linux上似乎已损坏(没有名为'pip._vendor.retrying'的模块)

时间:2019-07-18 14:59:49

标签: python python-3.x pip archlinux

系统更新后,尝试调用pip(或pip3.7pip3)时收到此错误:

  $ pip3.7
Traceback (most recent call last):
  File "/usr/bin/pip3.7", line 11, in <module>
    load_entry_point('pip==19.0.3', 'console_scripts', 'pip3.7')()
  File "/usr/lib/python3.7/site-packages/pkg_resources/__init__.py", line 489, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2843, in load_entry_point
    return ep.load()
  File "/usr/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2434, in load
    return self.resolve()
  File "/usr/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2440, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/lib/python3.7/site-packages/pip/_internal/__init__.py", line 40, in <module>
    from pip._internal.cli.autocompletion import autocomplete
  File "/usr/lib/python3.7/site-packages/pip/_internal/cli/autocompletion.py", line 8, in <module>
    from pip._internal.cli.main_parser import create_main_parser
  File "/usr/lib/python3.7/site-packages/pip/_internal/cli/main_parser.py", line 8, in <module>
    from pip._internal.cli import cmdoptions
  File "/usr/lib/python3.7/site-packages/pip/_internal/cli/cmdoptions.py", line 22, in <module>
    from pip._internal.utils.hashes import STRONG_HASHES
  File "/usr/lib/python3.7/site-packages/pip/_internal/utils/hashes.py", line 10, in <module>
    from pip._internal.utils.misc import read_chunks
  File "/usr/lib/python3.7/site-packages/pip/_internal/utils/misc.py", line 24, in <module>
    from pip._vendor.retrying import retry  # type: ignore
ModuleNotFoundError: No module named 'pip._vendor.retrying'

相关目录似乎存在并且归正确的软件包所有

  $ ls /usr/lib/python3.7/site-packages/pip/_vendor
__init__.py  __pycache__
  $ sudo pacman -Qo /usr/lib/python3.7/site-packages/pip/_vendor
/usr/lib/python3.7/site-packages/pip/_vendor/ is owned by python-pip 19.0.3-1

卸载和重新安装没有区别

  $ sudo pacman -Rv --noconfirm python-pip
Root      : /
Conf File : /etc/pacman.conf
DB Path   : /var/lib/pacman/
Cache Dirs: /var/cache/pacman/pkg/  
Hook Dirs : /usr/share/libalpm/hooks/  /etc/pacman.d/hooks/  
Lock File : /var/lib/pacman/db.lck
Log File  : /var/log/pacman.log
GPG Dir   : /etc/pacman.d/gnupg/
Targets   : python-pip
checking dependencies...
:: python optionally requires python-pip

Packages (1) python-pip-19.0.3-1

Total Removed Size:  1.06 MiB

:: Do you want to remove these packages? [Y/n] 
:: Processing package changes...
(1/1) removing python-pip                                                                                                                      [########################################################################################] 100%
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...
  $ sudo pacman -Qo /usr/lib/python3.7/site-packages/pip/_vendor
error: No package owns /usr/lib/python3.7/site-packages/pip/_vendor
  $ ls /usr/lib/python3.7/site-packages/pip/_vendor
ls: cannot access '/usr/lib/python3.7/site-packages/pip/_vendor': No such file or directory
  $ ls /usr/lib/python3.7/site-packages/pip
ls: cannot access '/usr/lib/python3.7/site-packages/pip': No such file or directory
  $ pip3.7
bash: /usr/bin/pip3.7: No such file or directory
  $ sudo pacman -Sv --noconfirm python-pip
Root      : /
Conf File : /etc/pacman.conf
DB Path   : /var/lib/pacman/
Cache Dirs: /var/cache/pacman/pkg/  
Hook Dirs : /usr/share/libalpm/hooks/  /etc/pacman.d/hooks/  
Lock File : /var/lib/pacman/db.lck
Log File  : /var/log/pacman.log
GPG Dir   : /etc/pacman.d/gnupg/
Targets   : python-pip
resolving dependencies...
looking for conflicting packages...

Packages (1) python-pip-19.0.3-1

Total Installed Size:  1.06 MiB

:: Proceed with installation? [Y/n] 
(1/1) checking keys in keyring                                                                                                                 [########################################################################################] 100%
(1/1) checking package integrity                                                                                                               [########################################################################################] 100%
(1/1) loading package files                                                                                                                    [########################################################################################] 100%
(1/1) checking for file conflicts                                                                                                              [########################################################################################] 100%
(1/1) checking available disk space                                                                                                            [########################################################################################] 100%
:: Processing package changes...
(1/1) installing python-pip                                                                                                                    [########################################################################################] 100%
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...
  $ sudo pacman -Qo /usr/lib/python3.7/site-packages/pip/_vendor
/usr/lib/python3.7/site-packages/pip/_vendor/ is owned by python-pip 19.0.3-1
  $ ls /usr/lib/python3.7/site-packages/pip/_vendor
__init__.py  __pycache__
  $ pip3.7
Traceback (most recent call last):
  File "/usr/bin/pip3.7", line 11, in <module>
    load_entry_point('pip==19.0.3', 'console_scripts', 'pip3.7')()
  File "/usr/lib/python3.7/site-packages/pkg_resources/__init__.py", line 489, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2843, in load_entry_point
    return ep.load()
  File "/usr/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2434, in load
    return self.resolve()
  File "/usr/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2440, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/lib/python3.7/site-packages/pip/_internal/__init__.py", line 40, in <module>
    from pip._internal.cli.autocompletion import autocomplete
  File "/usr/lib/python3.7/site-packages/pip/_internal/cli/autocompletion.py", line 8, in <module>
    from pip._internal.cli.main_parser import create_main_parser
  File "/usr/lib/python3.7/site-packages/pip/_internal/cli/main_parser.py", line 8, in <module>
    from pip._internal.cli import cmdoptions
  File "/usr/lib/python3.7/site-packages/pip/_internal/cli/cmdoptions.py", line 22, in <module>
    from pip._internal.utils.hashes import STRONG_HASHES
  File "/usr/lib/python3.7/site-packages/pip/_internal/utils/hashes.py", line 10, in <module>
    from pip._internal.utils.misc import read_chunks
  File "/usr/lib/python3.7/site-packages/pip/_internal/utils/misc.py", line 24, in <module>
    from pip._vendor.retrying import retry  # type: ignore
ModuleNotFoundError: No module named 'pip._vendor.retrying'

Other suggested solutions包含

  • ssl与此相关,但是python3 -c "import ssl"运行没有问题

  • python-requests可能会丢失,但是在那里。卸载和重新安装没有区别。

  • python-setuptools可能会丢失,但是在那里。卸载和重新安装没有区别。

  • pip uninstall pkg-resources==0.0.0,但这当然会失败,因为pip无法启动

  • curl -sS https://bootstrap.pypa.io/get-pip.py | sudo python3重新安装pip。我没有尝试。我宁愿不这样做,因为我认为它将以某种方式导致依赖性梦night

可能值得注意的是,我曾经有不同的python 3版本。我必须从AUR临时安装3.6,因为必须使用不能与3.7配合使用的软件。但是3.6版现在已经消失了,只剩下标准3.7版。

系统是Arch Linux 5.2.1,python是3.7.3。

1 个答案:

答案 0 :(得分:2)

您可以尝试直接从pip(或python)重新安装损坏的python3,而不要使用系统软件包管理器(pacman)。请注意肯定有关Arch Linux,但对我来说,它解决了Ubuntu 16.04上的类似问题(ModuleNotFoundError: No module named 'pip._vendor.retrying'):

$ sudo python -m pip install --upgrade pip