Aller au menu - Aller au contenu

gestion des bibliotheque python

gestion des bibliotheque python

Pour accéder à cette section
Connectez-vous !
connexion_rpx

Résolu Le problème de ce sujet a été résolu

Page 1 
Auteur Message
1 visiteur sur ce sujet (1 Anonyme)
Page 1 
Hors ligne furry501 # Posté le 03/02/2012 à 16:23:54
Avatar

Bonjour.
Je suis sur Ubuntu 10.10 et j'apprends Python.
sur mon ordinateur 4 versions de python coexistent: python 2.6 python 2.7 python 3 python 3.1
a l'invite $python j'ai la 2.7
je desire utiliser la bibliotheque numpy.
sur ide 2.6 import numpy fonctionne
sur ide 2.7, ide 3, ide 3.1 import numpy ne fonctionne pas.


questions:
comment installer une bibliothèque pour une version précise de python?
comment gère t'on les différentes versions de python? (si la 2.7 a toute les bibliothèques que j'utilise; détruire la 2.6)
pourquoi lors de la mise a niveau de 2.6 vers 2.7 les bibliothèques ne sont pas prisent en compte?

beaucoup de questions mais!!!
Publicité # Posté le 03/02/2012 à 16:23:54

Hors ligne plu9in # Posté le 03/02/2012 à 18:35:35

Bonjour,

Pour ta première question:
Tu ouvres un terminal et tu tapes la commande suivante (pour les version 2.7 et 3.1)
Code : Autre
1
2
sudo apt-get install python2.7-numpy
sudo apt-get install python3.1-numpy

Attention, je n'ai pas vérifier si numpy avait été porté pour ces versions de python ... Si elle ne l'a pas été, ce n'est pas grave mais tu auras alors une erreur.

Pour ta deuxième question, il y a plusieurs façons de faire ce que tu demandes :

la commande "python" est un lien symbolique appelé /usr/bin/python vers la version python utilisée (python2.6, python2.7, etc.) Il suffit donc de détruire ce lien symbolique et de le recréer en le faisant pointer vers la version que tu veux ... Je n'aime pas trop cette méthode car le système Ubuntu utilise python et tu ne maitrises pas les impacts.

Le mieux, c'est de mettre en tête de ton script la version de python que tu souhaites utiliser. Tu peux ainsi avoir plusieurs pythons qui coexistent sur une même machine. Par exemple, la ligne à mettre est la suivante pour utiliser la version python3.1

Code : Autre
1
#!/usr/bin/env python3.1


Evidemment, le numéro de version dépend des versions de python installées dans ton répertoire /usr/bin

Pour ta dernière question, eh bien, parce que tu lui dis de monter de versions ... Tu ne lui dis pas de monter de version en faisant toutes les mises à jour (ce qui n'est pas possible en automatique). Donc, pour chaque version, il te faut réinstaller toutes les librairies dont tu as besoin à la main.
Édité le 03/02/2012 à 18:40:53 par plu9in
Hors ligne furry501 # Posté le 03/02/2012 à 22:46:17
Avatar

Alors
Code : Bash
1
2
1 sudo apt-get install python2.7-numpy
2 sudo apt-get install python3.1-numpy

ca ne marche pas

mais a l'invite de $python j'ai la 2.7
pourais revenir a la 2.6 pour utiliser numpy et les autres bibliotheque qui sont sous usr/bin/python2.6
car a chaque fois que j'installe une bibliotheque c'est sous 2.6???

avec la commande
Code : Bash
1
ls -F

je ne vois pas le lien symbolique vers 2.7
Hors ligne plu9in # Posté le 03/02/2012 à 23:51:15

Bonsoir,

Si ça ne marche pas, ça veut dire que ces versions ne sont pas dans les dépôts Ubuntu et sont donc des versions non supportées.
Pour connaître les versions de python supportées:
Code : Console
> grep supported-version /usr/share/python/debian_defaults


Si les commandes que je t'ai fournies ne fonctionnent pas, c'est que numpy n'existe pas pour ces versions. Il faut que tu les compiles toi-même.

Concernant le lien symbolique, si tu exécutes la commande
Code : Console
> dir /usr/bin | grep python


Tu obtiens un truc du type :
Code : Console
lrwxrwxrwx 1 root   root           9 2010-11-21 14:24 python -> python2.6
-rwxr-xr-x 1 root   root     2288240 2010-04-16 16:06 python2.6


Tu vois ici que python est bien un lien vers la version. En conséquence, tu te places dans ton répertoire /usr/bin et, si tu veux la version 2.7, tu exécutes la suite de commandes suivantes:
Code : Console
> sudo rm python
> sudo ln -s python2.7 python
<code>

Pour revenir dans la configuration précédente:
<code type="console">
> sudo rm python
> sudo ln -s python2.6 python


NB: "sudo rm python" efface le lien mais pas sa cible.

Le mieux, c'est quand même de ne rien changer et de mettre en entête du fichier de ton script:
Code : Python
1
#!/usr/bin/env pythonX.Y

avec X.Y la version que tu souhaites exécuter

Après, tu rends ton script exécutable:
Code : Console
> chmod +x mon_script.py


Et il s'exécutera avec le bon interpréteur python
Code : Console
> ./mon_script.py


Si tu veux appeler un interpréteur donné, comme ceux-ci se trouvent dans ton répertoire /usr/bin, tu peux directement l'appeler:
Code : Console
> python2.7
Python X.Y.Z  ... 
[GCC U.V.W] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
Hors ligne d.donald # Posté le 04/02/2012 à 00:22:18
Avatar

Pour furry201:

Je ne sais pas de quelle manière tu as installé tes différentes versions de Python mais je pense avoir un cas assez similaire au tien avec un poste sous Ubuntu 11.10 et deux versions de python: la 2.7 (par défaut) et la 3.2.

J'ai installé cette deuxième version depuis les sources de manière à ne pas perturber celle par défaut. La méthode est décrite ici: http://www.giantflyingsaucer.com/blog/?p=2858

J'ai retenu d'installer les modules python dont j'ai besoin de deux manières différentes:
- pour la 2.7 par les packages standard. Par exemple Code : Console
sudo apt-get install python-numpy

- pour la 3.2 en récupérant les sources du module qui m'intéresse, les décompressants et en lançant Code : Console
sudo python3.2 setup.py install
depuis le répertoire en question. Ce qui est primordial dans ce cas, c'est de bien donner le bon interpréteur (python3.2 dans mon cas)

Au final, je peux bien utiliser mes modules dans mes deux versions de python. Dans le cas de numpy:

Code : Console
rtdsi@rtdsi-laptop:~$ which python
/usr/bin/python
rtdsi@rtdsi-laptop:~$ which python3.2
/usr/local/bin/python3.2
rtdsi@rtdsi-laptop:~$ python
Python 2.7.2+ (default, Oct  4 2011, 20:06:09) 
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> exit()
rtdsi@rtdsi-laptop:~$ python3.2
Python 3.2.2 (default, Sep 19 2011, 22:23:05) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> exit()
Édité le 04/02/2012 à 00:27:26 par d.donald


“Life is short (You need Python)”


- Bruce Eckel, ANSI C++ Comitee member,author of «Thinking in C++» and «Thinking in Java» -

http://www.python.org/
 
Hors ligne nohar # Posté le 04/02/2012 à 11:17:09
Had a quote before it was cool
Avatar
Validateurs

Ville : Saint hilarion
Pays : France métropolitaine
Études : IPI

Pourquoi faire coexister python 2.6 et python 2.7 sur ta machine ? Ça n'a strictement aucun intérêt.

La version de python 2 standard sur son OS est python 2.6, les différences entre 2.6 et 2.7 ne justifient pas d'installer spécifiquement 2.7 en parallèle avec 2.6 : reste le plus en harmonie possible avec ton OS, garde python 2.6 et vire python 2.7.

De même, sous Ubuntu, je crois bien que la version de python 3 des dépôts EST python 3.1 : quand tu dis que tu as python 3 et python 3.1 d'installés, tu veux dire que tu as installé python 3.1 à la fois manuellement et par les dépôts ?

Édité le 04/02/2012 à 11:20:35 par nohar
 
Hors ligne furry501 # Posté le 05/02/2012 à 17:35:15
Avatar

J' ai decidé de virer python2.7 avec synaptic (python2.7 suppression).
dans usr/bin le lien python pointe vers python2.6
Code : Bash
1
2
sudo rm python
sudo ln -s python2.6 python


mais apres un reboot
Code : Console
$ python python-version.py
(2, 7, 0, 'final', 0)


fabry@fabry-laptop:~$ python
Python 2.7 (r27, Jan  8 2012, 14:58:37) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

Il est toujours la.
Il s'accroche.

Code : Console
sudo apt-get remove python2.7

pour confirmer la supression
mais a la commande suivante montre qu'il est encore là le voyou.
Code : Console
$ whereis python2.7
python2: 
/usr/bin/python2.6 
/usr/bin/python2.6-dbg-config 
/usr/bin/python2.6-dbg 
/usr/bin/python2.6-config 
/etc/python2.6 
/etc/python2.7 
/usr/lib/python2.6 
/usr/lib/python2.7 
/usr/lib/python2.5 
/usr/local/bin/python2.7 
/usr/local/bin/python2.7-config 
/usr/local/lib/python2.6 
/usr/local/lib/python2.7 
/usr/include/python2.6 
/usr/include/python2.6_d 
/usr/share/python2.6


donc une question comment virer python2.7 et garder python2.6?
Hors ligne nohar # Posté le 05/02/2012 à 17:46:37
Had a quote before it was cool
Avatar
Validateurs

Ville : Saint hilarion
Pays : France métropolitaine
Études : IPI

Le fait que python2.7 se trouve dans /usr/local/bin montre que tu ne l'as pas installé avec ton gestionnaire de paquets mais plutôt manuellement.

Dans l'absolu, si tu l'as installé en le compilant par exemple, il faut que tu retournes là où les sources sont dépaquetées sur ta machine (le répertoire depuis lequel tu l'as installé) et que tu exécutes un sudo make uninstall.

Sinon, tu peux encore le dégager manuellement à coups de rm.
Édité le 05/02/2012 à 17:47:57 par nohar
 
Hors ligne furry501 # Posté le 05/02/2012 à 21:52:12
Avatar

maintenant je n'ai plus python2.7 (commande rm)

la 2.6.6 s'ouvre avec $python.
ce que je voulais


pour l'installation de numpy sur python3

Code : Console
cd /home/user
python3 setup.py build
sudo python3 setup.py install --prefix=/usr/local

avec une petite peur lorqu'on lance
Code : Console
Python 3.1.2 (release31-maint, Dec  9 2011, 20:50:50) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
Traceback (most recent call last):
  File "numpy/__init__.py", line 122, in <module>
    from numpy.__config__ import show as show_config
ImportError: No module named __config__

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "numpy/__init__.py", line 127, in <module>
    raise ImportError(msg)
ImportError: Error importing numpy: you should not try to import numpy from
        its source directory; please exit the numpy source tree, and relaunch
        your python intepreter from there.
>>>


mais tout va bien lorsqu'on revient dans son répertoire utilisateur

Code : Console
$ python3
Python 3.1.2 (release31-maint, Dec  9 2011, 20:50:50) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>>


En conclusion:
je vous remercie tous pour vos info elles m'on fait avancer.
bonne journée a tous.(c'est quand meme un dimanche)
Hors ligne d.donald # Posté le 05/02/2012 à 23:25:29
Avatar

Pour la "petite peur", si ça peut te rassurer j'ai eu le même gag en enchaînant mon test d'import depuis le même répertoire ;)


“Life is short (You need Python)”


- Bruce Eckel, ANSI C++ Comitee member,author of «Thinking in C++» and «Thinking in Java» -

http://www.python.org/
 

Retour au forum "Langage Python" ou à la liste des forums

Pour accéder à cette section
Connectez-vous !
connexion_rpx