2011-08-17 4 views
3

J'ai lu Add to python path mac os x et j'ai pensé que c'était une bonne idée, mais IDLE me donne une erreur de syntaxe pour un simple appel de open(filename, mode), donc j'ai regardé un peu plus loin et j'ai trouvé que je pouvais faire comme indiqué dans http://developer.apple.com/library/mac/#qa/qa1067/_index.html et mettre en place un environnement.plist dans un dossier .MacOSX, donc je l'ai fait dans mon dossier personnel et toujours pas de changements ... Je suis maintenant perdu :-)Pythonpath sur Mac OSX

C'est ce que j'ai ajouté comme mon python-chemin dans .bash_profile et le même chemin dans mon environment.plist (sans: $ PYTHONPATH):

PYTHONPATH="/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7:$PYTHONPATH" 
export PYTHONPATH 

EDIT: est où je reçois la syntaxe erreur ... fonctionne très bien dans l'interpréteur

import xml.etree.ElementTree as et 
import json 

app = Bottle() 

@app.route('/proPass', method ='POST') 

#here happens here, need it further down in the code... which is not really relevant 
f = open('/Users/mohi/Desktop/proPass_project/server_service/systems.xml', 'rw') 

def getData(): 
    timestamp = request.POST.get('timestamp', '').strip() 
    data = request.POST.get('data', '').strip() 

    if timestamp: 
     processData(data, timestamp) 
run() 

L'erreur:

File "proPass_script.py", line 9 
    f = open('/Users/mohi/Desktop/proPass_project/server_service/systems.xml', 'rw') 
    ^
    SyntaxError: invalid syntax 

+1

Mettez la trace complète et exacte et l'erreur entre '

' and '
' afin que nous puissions voir exactement ce qui pourrait être le problème. Ajoutez également quelques lignes de contexte - souvent l'erreur se trouve sur l'une des lignes __avant__ où elle détecte l'erreur. – agf

Répondre

3

PYTHONPATH n'a pas d'effet si vous obtenez un SyntaxError - seulement un ImportError. Donc, si vous obtenez un SyntaxError, vous avez un autre problème avec votre code. Veuillez poster le code et nous le signalerons.

Edit: Votre erreur est sur cette ligne:

@app.route('/proPass', method ='POST') 

Le @ désigne un décorateur, qui est valable uniquement sur la ligne juste avant une définition de fonction (def), une définition de classe (class), ou un autre décorateur.

Il affiche l'erreur sur le premier caractère de la ligne open car il attend une fonction ou une définition de classe. Voir la documentation pour function definitions pour plus d'informations sur les décorateurs.

+0

k, ne le savais pas, regardait un peu autour du filet et j'ai trouvé des gens avec des problèmes similaires et ils ont dû définir un pythonpath – markus

+0

Ceci est plus un commentaire qu'une réponse. –

+0

@Shawn mis à jour pour résoudre son problème. – agf