web-dev-qa-db-fra.com

Utiliser python 3 paquets installés par pip3 lorsque des paquets installés par apt existent également?

J'ai numpy 1.8.2 installé dans/usr/lib/python3/dist-packages (via apt), et la dernière version (1.9.2) installée dans /usr/local/lib/python3.4/dist-packages (via pépin). Les deux chemins sont dans sys.path (dans cet ordre), mais seule la version la plus ancienne d'apt est importée dans python3.

➜  ~  Sudo pip3 install --upgrade numpy
[Sudo] password for naught101: 
Real name of requirement numpy is numpy
Requirement already up-to-date: numpy in /usr/local/lib/python3.4/dist-packages
Cleaning up...
➜  ~  ipython3
Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
Type "copyright", "credits" or "license" for more information.

IPython 1.2.1 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: import numpy

In [2]: numpy.version
Out[2]: <module 'numpy.version' from '/usr/lib/python3/dist-packages/numpy/version.py'>

In [3]: 
KeyboardInterrupt

In [3]: numpy.version.version
Out[3]: '1.8.2'

In [5]: import sys

In [6]: sys.path
Out[6]: 
['',
 '/usr/local/bin',
 '/usr/lib/python3/dist-packages',
 '/usr/lib/python3.4',
 '/usr/lib/python3.4/plat-x86_64-linux-gnu',
 '/usr/lib/python3.4/lib-dynload',
 '/usr/local/lib/python3.4/dist-packages',
 '/usr/lib/python3.4/dist-packages',
 '/usr/lib/python3/dist-packages/IPython/extensions']

(python3 fait la même chose que ipython3 ici)

Comment puis-je obtenir que python3 utilise la nouvelle version?

Je ne peux pas simplement désinstaller la version d'apt, car d'autres packages en dépendent.

6
naught101

Cet article de blog explique très bien la logique du code derrière ce principe: https://leemendelowitz.github.io/blog/how-does-python-find-packages.html

En le citant:

Comme l'explique la documentation, sys.path est renseigné à l'aide du répertoire de travail en cours, suivi des répertoires répertoriés dans votre variable d'environnement PYTHONPATH, suivis des chemins d'accès par défaut dépendants de l'installation, contrôlés par le module de site.

2
Lucas Cimon