Le mauvais interpréteur python est appelé
J'ai mis à jour mon interpréteur python, mais je pense que le vieux est encore appelée. Quand je vérifie pour la version que j'obtiens:
$ python -V
Python 3.0.1
Mais je crois que l'ancien interprète est encore appelé. Lorsque je lance la commande:
python myProg.py
Le script s'exécute correctement. Mais quand je l'appeler avec la commande
./myProg.py
Je reçois le message d'erreur:
AttributeError: 'str' object has no attribute 'format'
Qui, apparemment, est due à l'ancien interprète d'être appelé. Comment puis-je résoudre ce problème? - Je exécuter Mac OS X 10.5. Il a quelque chose à voir avec la première ligne:
#!/usr/bin/python
Je viens de commencer avec python et je ne suis pas très familier avec les langages interprétés, donc je ne suis pas trop sûr de ce qui se passe.
Edit: Wow, c'était rapide. Merci beaucoup!
source d'informationauteur Lucas
Vous devez vous connecter pour publier un commentaire.
Selon la première ligne du script,
#!/usr/bin/python
vous êtes à l'appel de l'interpréteur Python à/usr/bin/python
(ce qui est le plus souvent celui qui est livré avec Mac OS X). Vous devez modifier ce chemin d'accès vers le chemin où vous avez installé votre interpréteur Python 3 (probablement/usr/local/bin/python
ou/opt/local/bin/python
); ou il vous suffit de modifier la ligne à lire#!/usr/bin/env python
qui va appeler lepython
répertoriés en premier dans votrePATH
variable (ce qui semble être la version la plus récente que vous avez installé).Tout d'abord, la ligne shebang est:
Ce sera assurez-vous que l'interpréteur python qui est appelé lorsque vous
./foo.py
est l'interprète qui est appelée lorsque vous appelez python à partir de la ligne de commande.À partir de votre description, je pense que si vous n':
Il ne serait pas vous donner
/usr/bin/python
. Il vous donnera quelque chose d'autre, qui est l'endroit où le python 3 interprète vie. Vous pouvez modifier votre ligne shebang à la ci-dessus, ou remplacez le chemin d'accès à l'interpréteur python avec le chemin retourné parwhich
.Essayer
which python
. Je vais vous dire qui interpréteur python est utilisé dans votre environnement.Si elle n'est pas
/usr/bin/python
comme dans le script, puis votre soupçon est confirmé.C'est très probablement ce que vous pensez, que la ligne shebang est l'appel de l'ancienne version. Deux choses que vous pourriez vouloir vérifier:
1) quelle est la version de l'interpréteur dans /usr/bin/python:
2) où est le python 3 interprète que vous avez installés:
Si vous obtenez la bonne de la ligne de commande, puis remplacez votre ligne shebang:
Addendum: Vous pouvez aussi remplacer l'ancienne version de python avec un lien symbolique vers python 3, mais méfiez-vous que toutes les mises à jour majeure d'OS X (c'est à dire: 10.5.6 de la version 10.5.7) sera susceptible de briser ce:
run 'python qui' - si cela donne une réponse différente de celle de /usr/bin/python, changer #!/usr/bin/python pour avoir que le chemin d'accès au lieu.
Il peut être un peu bizarre de fournir un script Perl pour répondre à un Python question, mais il travaille pour Python tout aussi bien comme il le fait pour Perl. C'est un script appelé"
fixin
", qui signifie "fixer interprète". Il modifie la ligne shebang de la chaîne correcte de votre CHEMIN.Le code est dérivé à partir d'un script du même nom dans l'original Chameau Livre ('la Programmation en Perl', première édition). Cette copie a été piraté un peu depuis, et devrait être piraté un peu plus. Mais je l'utilise régulièrement, en fait, j'ai juste copié à partir d'un Mac à l'autre, et depuis, je n'ai pas installé Perl 5.10.0 sur la deuxième, j'ai couru:
Modifiant ainsi privé d'installer Perl pour le standard.
Exercice pour le lecteur - réécrire le script en Python.