无法在Ubuntu 16.04中使用pip3

4
我无法使用pip3,但是pipsudo pip3正常工作。它给我以下错误。有办法可以纠正这个错误吗?我尝试了从get-pip.py卸载并重新安装pip,sudo easy_install pipsudo apt install python3-pip,但错误仍然存在。下面的详细信息可能会有所帮助。
gajam@gajam:~$ pip3
Traceback (most recent call last):
  File "/home/gajam/.local/bin/pip3", line 7, in <module>
    from pip import main
  File "/home/gajam/.local/bin/pip/__init__.py", line 26, in <module>
    from pip.utils import get_installed_distributions, get_prog
  File "/home/gajam/.local/bin/pip/utils/__init__.py", line 27, in <module>
    from pip._vendor import pkg_resources
  File "/home/gajam/.local/bin/pip/_vendor/pkg_resources/__init__.py", line 3018, in <module>
    @_call_aside
  File "/home/gajam/.local/bin/pip/_vendor/pkg_resources/__init__.py", line 3004, in _call_aside
    f(*args, **kwargs)
  File "/home/gajam/.local/bin/pip/_vendor/pkg_resources/__init__.py", line 3046, in _initialize_master_working_set
    dist.activate(replace=False)
  File "/home/gajam/.local/bin/pip/_vendor/pkg_resources/__init__.py", line 2578, in activate
    declare_namespace(pkg)
  File "/home/gajam/.local/bin/pip/_vendor/pkg_resources/__init__.py", line 2152, in declare_namespace
    _handle_ns(packageName, path_item)
  File "/home/gajam/.local/bin/pip/_vendor/pkg_resources/__init__.py", line 2092, in _handle_ns
    _rebuild_mod_path(path, packageName, module)
  File "/home/gajam/.local/bin/pip/_vendor/pkg_resources/__init__.py", line 2121, in _rebuild_mod_path
    orig_path.sort(key=position_in_sys_path)
AttributeError: '_NamespacePath' object has no attribute 'sort'
gajam@gajam:~$ which pip3
/home/gajam/.local/bin/pip3
gajam@gajam:~$ sudo which pip3
/usr/local/bin/pip3
gajam@gajam:~$ pip

Usage:   
  pip <command> [options]

Commands:
  install                     Install packages.
  download                    Download packages.
  uninstall                   Uninstall packages.
  freeze                      Output installed packages in requirements format.
  list                        List installed packages.
  show                        Show information about installed packages.
  check                       Verify installed packages have compatible dependencies.
  search                      Search PyPI for packages.
  wheel                       Build wheels from your requirements.
  hash                        Compute hashes of package archives.
  completion                  A helper command used for command completion.
  help                        Show help for commands.

General Options:
  -h, --help                  Show help.
  --isolated                  Run pip in an isolated mode, ignoring environment variables and user configuration.
  -v, --verbose               Give more output. Option is additive, and can be used up to 3 times.
  -V, --version               Show version and exit.
  -q, --quiet                 Give less output. Option is additive, and can be used up to 3 times (corresponding to WARNING, ERROR, and
                              CRITICAL logging levels).
  --log <path>                Path to a verbose appending log.
  --proxy <proxy>             Specify a proxy in the form [user:passwd@]proxy.server:port.
  --retries <retries>         Maximum number of retries each connection should attempt (default 5 times).
  --timeout <sec>             Set the socket timeout (default 15 seconds).
  --exists-action <action>    Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup, (a)bort.
  --trusted-host <hostname>   Mark this host as trusted, even though it does not have valid or any HTTPS.
  --cert <path>               Path to alternate CA bundle.
  --client-cert <path>        Path to SSL client certificate, a single file containing the private key and the certificate in PEM format.
  --cache-dir <dir>           Store the cache data in <dir>.
  --no-cache-dir              Disable the cache.
  --disable-pip-version-check
                              Don't periodically check PyPI to determine whether a new version of pip is available for download. Implied with
                              --no-index.
gajam@gajam:~$ which pip
/usr/local/bin/pip`

当我安装spacy en模型时,我遇到了类似的错误(https://spacy.io/usage/models)。

gajam@gajam:~$ python3 -m spacy download en
Traceback (most recent call last):
  File "/usr/lib/python3.5/runpy.py", line 174, in _run_module_as_main
    mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
  File "/usr/lib/python3.5/runpy.py", line 133, in _get_module_details
    return _get_module_details(pkg_main_name, error)
  File "/usr/lib/python3.5/runpy.py", line 109, in _get_module_details
    __import__(pkg_name)
  File "/home/gajam/.local/lib/python3.5/site-packages/pip/__init__.py", line 26, in <module>
    from pip.utils import get_installed_distributions, get_prog
  File "/home/gajam/.local/lib/python3.5/site-packages/pip/utils/__init__.py", line 27, in <module>
    from pip._vendor import pkg_resources
  File "/home/gajam/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3018, in <module>
    @_call_aside
  File "/home/gajam/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3004, in _call_aside
    f(*args, **kwargs)
  File "/home/gajam/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3046, in _initialize_master_working_set
    dist.activate(replace=False)
  File "/home/gajam/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2578, in activate
    declare_namespace(pkg)
  File "/home/gajam/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2152, in declare_namespace
    _handle_ns(packageName, path_item)
  File "/home/gajam/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2092, in _handle_ns
    _rebuild_mod_path(path, packageName, module)
  File "/home/gajam/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2121, in _rebuild_mod_path
    orig_path.sort(key=position_in_sys_path)
AttributeError: '_NamespacePath' object has no attribute 'sort'
gajam@gajam:~$ which python3 -m spacy download en
/usr/bin/python3
/usr/local/bin/spacy

你是如何安装 pip 的? - JP Ventura
目前使用命令 "sudo easy_install pip" - gajam
1个回答

1

通常情况下,使用sudo pip install被认为是一个不好的选择,因为它会干扰apt。我建议使用虚拟环境。

sudo apt install python3-venv
python3 -m venv ~/venv
source ~/venv/bin/activate
pip install --upgrade pip wheel setuptools
pip install <whatever you want to install>

根据您想要安装的Python包,您可能需要GCC和二进制依赖项的开发包。

sudo apt install python3-dev build-essential
sudo apt lib<whatever library>-dev

谢谢回复。我目前正在使用那个。但是,如果我想在系统本身(而不是虚拟环境)中使用 pip3 安装 Python 包,我能停止错误吗? - gajam
你应该检查是否真的需要在系统范围内安装它们。你的使用情况是什么?如果你需要向系统范围内提供venv中安装的脚本访问权限,你可以将它们在/usr/bin(或PATH中的另一个目录)中创建符号链接。 - code_onkel
当我安装spacy en模型(https://spacy.io/usage/models)时,我遇到了类似的错误。 - gajam
我相当确定你的环境中存在PATH或PYTHONPATH混淆。你尝试过venv方法吗? - code_onkel
venv方法已经成功运行良好。我只是想知道是否可以在虚拟环境之外消除错误。 - gajam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接