2015-12-03 1 views
1

Je suis un newb à python. Je suis en cours d'exécution d'un script que je suis sur le web:conflit de version python avec json.dumps

python file.py 

Je reçois ceci:

File "file.py", line 293 
    print json.dumps(evaluate(), indent=4) 
      ^
SyntaxError: invalid syntax 

Je l'ai lu est lié à la version python, qui devrait être un peu 2.7. J'ai donc téléchargé pyenv. Et je définis la bonne version dans le répertoire qui contient file.py: pyenv local 2.7.10. Mais j'ai toujours la même erreur.

(Pour plus d'informations, je suis en train d'installer blockchain outil: Ethereum)

+0

Quel système d'exploitation utilisez-vous? Est-ce que la première ligne du script python a quelque chose comme '#!/Usr/bin/python' (le" shebang ")? Je n'utilise pas 'pyenv' donc je ne peux pas en dire beaucoup à ce sujet. Que diriez-vous d'écrire un script expérimental qui utilise ce même "shebang" (si présent), puis fait juste "importer sys; print (sys.version)" pour rendre quelque chose plus facile à expérimenter. – tdelaney

+0

@tdelaney oui c'est un script python avec '#!/Usr/bin/python' et j'ai trouvé ceci:' 3.5.0 | Anaconda 2.4.0'. Je ne sais pas comment m'en débarrasser - en avez-vous une idée? – Newben

+0

Des problèmes d'environnement étranges sont difficiles à comprendre! '/ usr/bin/python' est généralement python 2, ce qui est ce que vous voulez pour l'ancienne instruction d'impression de style (' print something' par opposition à 'print (something)'). Python 3 apparaît généralement comme '/ usr/bin/python3'. Que dit «quel python»? Je ne suis pas familier avec 'anacoda' non plus et il peut avoir quelque chose d'autre dans le chemin. – tdelaney

Répondre

4

3.x Python déclaration d'impression modifiée pour être des fonctions d'impression

Python 2.x:

print "Hello World" 

Python 3.x

print("Hello World") 

Donc parce que vous utilisez Python 3.x vous devrez mettre à jour votre code pour utiliser le style d'impression 3.x (par exemple, les appels de fonction d'impression).

print(json.dumps(evaluate(), indent=4)) 
+0

Il existe d'autres différences entre 2 et 3, à part "print". La conversion peut être un ascenseur majeur. – tdelaney