Проблема с относительным импортом Python - PullRequest
0 голосов
/ 24 сентября 2010

Я использую Python 2.6 и установил API Facebook в виде пакета python (в /usr/lib64/python2.6/site-packages/facebook / ...), что означает, что он доступен с простым import facebook или from facebook import ....

Это работает хорошо, если нет имен.Например, в моем проекте я пытаюсь импортировать API Facebook в своем коде на project.facebook с

from .facebook import GraphAPI

Насколько я понимаю, это должно работать, потому что точка явно указывает Python искать пакет одинвойдите в иерархию пакетов и не пытайтесь импортировать пакет project.facebook, который он уже анализирует.

Однако он не работает:

Не удалось импортировать project.views.Ошибка была: невозможно импортировать имя GraphAPI

project.views - это еще один файл исходного кода, который включает project.facebook (я использую Django, но я не уверен, имеет ли он какое-то отношение к этому).

Я знаю, я мог бы просто переименовать свой исходный файл или использовать from __future__ import absolute_import (это прекрасно работает), но я считаю, что оба обходных путей.

Есть ли причина, по которой from .facebook import ... не работает?

Обновление:

Вот вывод ls -R в моем каталоге рабочей области (который содержит proj в качестве единственного проекта).

Следующее содержимоенаходится в / home / chris / dev / workspace /, в то время как API Python Facebook установлен глобально (в /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: ...

1 Ответ

0 голосов
/ 24 сентября 2010

Очевидно (согласно http://docs.python.org/whatsnew/2.5.html#pep-328), пути from __future__ import absolute_import не существует, поэтому я думаю, что мне просто нужно быть счастливым с этим __future__ импортом, чтобы решить мою проблему с тенями имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...