web-dev-qa-db-fra.com

Problèmes lors de la mise à niveau vers Python 3.3 et de la configuration de Django

Je suis nouveau sur Linux et j'essaie d'installer Python/Django sur ma machine! J'ai installé Python 3.3 à partir du fichier source et il a été compilé dans /usr/local/bin. Ensuite, j'ai créé un lien symbolique entre /usr/bin/python et /usr/local/bin/python3, de sorte que chaque fois que j'appelle python à partir de la ligne de commande, il utilise la dernière version.

Maintenant, j'essaie d'installer MySQL Python et j'ai le résultat suivant:

apt-get install python-mysqldb

Reading package lists... Done
Building dependency tree
Reading state information... Done
python-mysqldb is already the newest version.
The following extra packages will be installed:
  apt-listchanges python-apt
Suggested packages:
  python-glade2 python-gtk2 python-apt-dbg python-vte python-apt-doc
The following packages will be upgraded:
  apt-listchanges python-apt
2 upgraded, 0 newly installed, 0 to remove and 142 not upgraded.
3 not fully installed or removed.
Need to get 0 B/394 kB of archives.
After this operation, 250 kB of additional disk space will be used.
Do you want to continue [Y/n]? Y
Traceback (most recent call last):
  File "/usr/bin/apt-listchanges", line 28, in <module>
    import apt_pkg
ImportError: No module named 'apt_pkg'

Des idées pour résoudre le problème? Ou des conseils sur la façon de nettoyer cette installation (si celle-ci est trop endommagée)?

4
user1881353

Si vous "remplacez" l'installation par défaut de python, vous casserez probablement le système. De nombreux outils système utilisent python2.X et échoueront lors de l'utilisation de python3. Dans votre cas, python3 n'a pas le module apt_pkg, vous obtenez donc cette erreur.

Pour résoudre ce problème, supprimez le lien symbolique créé et associez-le au fichier python2.X par défaut (python2.7 dans 12.10):

Sudo rm /usr/bin/python
Sudo ln -s /usr/bin/python2.7 /usr/bin/python

Si vous voulez faire de python3 l'interpréteur "par défaut", je suppose que la meilleure façon de ne rien casser est d'utiliser virtualenv (plus d'infos ici ):

virtualenv -p /usr/bin/python3.3 <destination dir>
3
Salem

Ne faites pas de lien symbolique /usr/bin/python vers python3. Cela va casser une grande partie d'Ubuntu. Seuls les éléments qui sont réellement portés sur Python 3.x pourront être exécutés sous python3.

2
dobey