简体   繁体   中英

Python3.7 on Windows Ubuntu Bash shell ImportError: cannot import name 'HTTPSHandler' from 'urllib.request' (/usr/lib/python3.7/urllib/request.py)

I've recently updated Python to version 3.7 from version 3.5, and made it the default in my bash shell. I've also updated pip and made sure it uses Python3.7.

Now, whenever I try to install any module using pip I get this error"

$pip3 install google 
Traceback (most recent call last):   File "/home/AnnaK/.local/bin/pip3", line 7, in <module>
    from pip._internal.cli.main import main   File "/usr/lib/python3/dist-packages/pip/__init__.py", line 16, in <module>
    from pip.vcs import git, mercurial, subversion, bazaar  # noqa   File "/usr/lib/python3/dist-packages/pip/vcs/subversion.py", line 9, in <module>
    from pip.index import Link   File "/usr/lib/python3/dist-packages/pip/index.py", line 30, in <module>
    from pip.wheel import Wheel, wheel_ext   File "/usr/lib/python3/dist-packages/pip/wheel.py", line 39, in <module>
    from pip._vendor.distlib.scripts import ScriptMaker   File "/usr/share/python-wheels/distlib-0.2.2-py2.py3-none-any.whl/distlib/scripts.py", line 14, in <module>   File "/usr/share/python-wheels/distlib-0.2.2-py2.py3-none-any.whl/distlib/compat.py", line 66, in <module> ImportError: cannot import name 'HTTPSHandler' from 'urllib.request' (/usr/lib/python3.7/urllib/request.py)

I get the same error if I try to simply run pip. This didn't happen when I was using python3.5. I did have this problem when briefly using python2.7, but I fixed it using https://askubuntu.com/questions/581999/pip-raises-importerror-cannot-import-name-httpshandler . That solution doesn't seem to work for python3.7.

I've tried to reinstall pip, reinstall python3, update my Windows Ubuntu subsystem, and reinstall libssl-dev. I'm stumped. Any help is appreciated!

You must have inadvertently upgraded your system pip (probably through something like sudo pip install pip --upgrade )

pip xx adjusts where its internals are situated. The pip3 command you're seeing is one provided by your package maintainer and is not a file managed by pip.

You can read more about this on pip's issue tracker

You'll probably want to not upgrade your system pip and instead use a virtualenv.

To recover the pip3 binary you'll need to sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall .

It should work fine if you use the first approach python3 -m pip ... instead of pip3 ... .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM