2010-09-24 7 views
0

J'utilise Python 2.6 et j'ai installé l'API Facebook en tant que paquet python (sous /usr/lib64/python2.6/site-packages/facebook/ ...) ce qui signifie qu'il est disponible avec une plaine import facebook ou from facebook import ....Problème avec les importations relatives Python

Cela fonctionne bien, tant qu'il n'y a pas de conflit de nom. Par exemple, dans mon projet, je tente d'importer l'API Facebook dans mon code à project.facebook avec

from .facebook import GraphAPI 

De ma compréhension, cela devrait fonctionner parce que le point dit explicitement Python pour rechercher le package d'un cran dans la hierarchie du paquet et ne pas essayer d'importer le paquet project.facebook il est déjà en train d'analyser.

Cependant, cela ne fonctionne pas:

Impossible d'importer project.views. Erreur était: ne peut pas importer le nom GraphAPI

project.views est un autre fichier de code source qui comprend project.facebook (j'utilise Django mais je ne suis pas sûr si elle a quelque chose à voir avec cela). Je sais, je pourrais juste renommer mon fichier source ou utiliser from __future__ import absolute_import (cela fonctionne très bien) mais je considère que les deux sont des solutions de contournement.

Y a-t-il une raison pour laquelle le from .facebook import ... ne fonctionne pas?

Mise à jour:

est ici la sortie de ls -R dans mon répertoire de l'espace de travail (qui contient proj comme le seul projet). Le contenu suivant se trouve sous/home/chris/dev/workspace /, alors que l'API Facebook Python est installée globalement (dans /usr/lib64/python2.6/site-packages/facebook/ ...).

./proj/templates: ... 

./proj/templates: ...> ./proj: README src static templates 

./proj/src: 
__init__.py __init__.pyc manage.py settings.py settings.pyc 
settings_local.py settings_local.pyc 
urls.py urls.pyc proj 

./proj/src/proj: 
__init__.py admin.py auth.py facebook.py forms.py halloffame.py 
helper.py image.py management  
middleware.pyc models.pyc openid.pyc 
stats.pyc twitter.pyc urls.pyc 
views.pyc 
__init__.pyc admin.pyc auth.pyc facebook.pyc forms.pyc 
halloffame.pyc helper.pyc image.pyc 
middleware.py models.py  
openid.py stats.py twitter.py 
urls.py  views.py 

./proj/src/proj/management: 
__init__.py __init__.pyc commands 

./proj/src/proj/management/commands: 
__init__.py __init__.pyc cronjob.py cronjob.pyc 

./proj/templates: ..../proj/templates: ... 

./proj/templates: ... 
+0

Pouvez-vous donner plus de détails sur les positions relatives des fichiers Python dans l'arborescence source? –

+0

vous pouvez utiliser la commande 'ls -R' sur la console pour lister les fichiers de façon hiérarchique ... (inclure les sous-répertoires récursivement) – shahjapan

+0

J'ai édité ma question et j'ai inclus la structure du répertoire. – ChrisM

Répondre

Questions connexes