2017-01-06 4 views
1

Рассмотрим следующую структуру каталогов для установленного пакета Python:Импорт в пределах установленного пакета Python

project/ 
    project/ 
     __init__.py 
     file1.py 
     file2.py 
     module/ 
      __init__.py 
      file3.py 
    setup.py 

Для того, чтобы получить доступ к функции в file2.py от file1.py, можно сделать

from file2 import fun 

Или

from project.file2 import fun 

Аналогично, если от file1.py Я хотел получить доступ к функции в file3.py, я мог бы сделать from project.module.file3 import function или from .module.file3 import function.

Эти два варианта оказываются эквивалентными. Есть ли предпочтительный метод или разница между двумя, которые мне не хватает?

ответ

2

Хотя это в основном зависит от личных предпочтений, PEP8 рекомендует использовать абсолютный импорт:

from project.module.file3 import function 

, а не относительный импорт:

from .module.file3 import function 

Абсолютного импорт является более читаемым и лучше ведет себя (лучше ошибки сообщения после сбоя). НО, когда использование абсолютного импорта становится излишне подробным (используйте свое мнение), использование относительного импорта является приемлемой альтернативой. См. Это PEP8 documentation об импорте.

Смежные вопросы