38 votes

Mise à niveau de python3.4 à python3.6 sur ubuntu rompt pip

J'essaie d'installer python3.6 sur ma machine après avoir actuellement python3.4. Cependant, après l'installation, essayer d'exécuter pip sous python3.6 me donne l'erreur suivante:

 Traceback (most recent call last):
  File "pip3", line 7, in <module>
    from pip import main
  File "/usr/lib/python3/dist-packages/pip/__init__.py", line 59, in <module>
    from pip.log import logger
  File "/usr/lib/python3/dist-packages/pip/log.py", line 9, in <module>
    import colorama, pkg_resources
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 1520, in <module>
    register_loader_type(importlib_bootstrap.SourceFileLoader, DefaultProvider)
AttributeError: module 'importlib._bootstrap' has no attribute 'SourceFileLoader'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
    import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 20, in <module>
    import apt
  File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

Original exception was:
Traceback (most recent call last):
  File "pip3", line 7, in <module>
    from pip import main
  File "/usr/lib/python3/dist-packages/pip/__init__.py", line 59, in <module>
    from pip.log import logger
  File "/usr/lib/python3/dist-packages/pip/log.py", line 9, in <module>
    import colorama, pkg_resources
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 1520, in <module>
    register_loader_type(importlib_bootstrap.SourceFileLoader, DefaultProvider)
AttributeError: module 'importlib._bootstrap' has no attribute 'SourceFileLoader'
 

Il y a eu plusieurs commentaires sur Internet à propos de cette erreur. Cependant, aucun d'eux ne contient de suggestion de résolution réelle. Quelqu'un at-il une idée de comment je pourrais résoudre ce problème?

24voto

Vendii Points 249

J'ai réussi à le résoudre sans rien installer depuis les sources. Voici ce que j'ai fait:

  1. Tout d'abord, installez pip pour Python3.x (pour quelque étrange raison, je ne l'ai pas...)

    $ sudo apt-get install python3-pip
    

    C'est une ancienne version...

    $ pip3 --version
    pip 1.5.4 from /usr/lib/python3/dist-packages (python 3.4)
    
  2. ... de sorte que la mise à niveau vers la dernière

    $ sudo pip3 install --upgrade pip
    

    Maintenant, c'est beaucoup mieux

    $ sudo pip3 --version
    pip 9.0.1 from /usr/local/lib/python3.4/dist-packages (python 3.4)
    

  1. Puis la mise à niveau virtualenvvwrapper

    $ sudo pip3 install --upgrade virtualenvwrapper
    # ...
    Successfully installed pbr-3.0.1 six-1.10.0 stevedore-1.22.0 virtualenv-15.1.0 virtualenv-clone-0.2.6 virtualenvwrapper-4.7.2
    
  2. Maintenant la création d'un nouveau virtualenv œuvres:

    $ mkvirtualenv -p `which python3.6` <VIRTUALENV_NAME>
    

    pip fonctionne aussi:

    $ pip install django
    # ...
    Successfully installed django-1.11.2 pytz-2017.2
    
    $ pip freeze
    Django==1.11.2
    pytz==2017.2
    

Note: Maintenant, je réalise que c'est un peu plus que ce que vous avez demandé, mais sans savoir exactement où vous l'avez manqué) je suppose que vous devriez être OK après l'étape 2.

19voto

Igonato Points 4979

Avait le même problème. L'installation de python à partir de la source a aidé.

 # Remove existing python 3.6 if installed with apt
$ sudo apt-get autoremove python3.6

# Get the source
$ wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
$ tar xvf Python-3.6.1.tar.xz
$ cd Python-3.6.1

# Configure and install
$ sudo ./configure
$ sudo make altinstall

# Success!
$ pip3.6 -V
pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6)
 

Edit: j'ai découvert pyenv depuis. Facilite l’installation et la gestion de différentes versions de python. Essaie!

4voto

dirkaholic Points 99

Je ne pouvais pas résoudre en cours d'exécution

python3 get-pip.py

ou

pip3 install --upgrade

parce que là, j'ai déjà eu des problèmes avec pkg_resources.py. Re-installation de l'python3-setuptools package à partir d'Ubuntu n'a pas aidé car cela semble encore à installer celui pour la version initialement installé avec le système Ubuntu (3.4 dans mon cas) mais j'ai pu le résoudre en installant manuellement la setuptools via

wget https://bootstrap.pypa.io/ez_setup.py -O - | python3

Remarque: python3 des points à ma nouvelle version de python 3.6. Si ce n'est pas le cas pour vous, alors vous devez exécuter

wget https://bootstrap.pypa.io/ez_setup.py -O - | python3.6

3voto

href_ Points 355

J'ai remplacé Python 3.4 par 3.6 sur mes serveurs Ubuntu 14.04 et j'ai eu le même problème. Dans mon cas, la cause semblait être un ancien système pip:

 $ pip --version
pip 1.5.4 from /usr/lib/python2.7/dist-packages (python 2.7)
 

Je n'ai jamais installé python3-pip. Au lieu de cela, j'ai résolu l'erreur comme suit:

 $ sudo pip install --upgrade pip
$ sudo pip install --upgrade virtualenv
 

2voto

gmccoy Points 120

J'avais le même problème. Il semble que j'ai eu 2 versions de pkg_resources sur mon système.

/usr/local/lib/python3.6/site-packages/pkg_resources.py

/usr/lib/python3.6/site-packages/pkg_resources/__init__.py

Déplacer l'ancienne version pour que mon système puisse trouver la version plus récente corrige le problème pour moi.

mv /usr/local/lib/python3.6/site-packages/pkg_resources.py /usr/local/lib/python3.6/site-packages/pkg_resources.py.back

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X