Это моя файловая структура.Python Импорт с использованием __init__.py вместо добавления в sys.path
/working dir
__init__.py
main.py
/packages
__init__.py
snafu.py
/subfolder1
__init__.py
foo.py
/subfolder2
__init__.py
bar.py
/many_more
...
Если я бегу main.py
он будет пытаться импортировать, from subfolder1.foo import something
Но foo.py
попытается import subfolder2
, который не будет работать, потому что subfolder2
не найден.
Было бы слишком много работы, чтобы войти в каждый файл и изменить каждый оператор импорта в from packages.a_subfolder.whatever import something
Я получил его на работу, добавив /packages
к sys.path
, но я бы предпочел не делать этого. Есть ли способ исправить это, используя файлы __init__.py
?
Добавил бы import *
в/packages __init__.py Файл работает?
Пакеты many_more/являются сторонними пакетами, которые я загрузил, так как я работаю над этим на разных компьютерах вместо установки пакетов на каждом компьютере, на котором я работаю, он просто использует тот, который находится в папке. Например: для использования googledrive в вашей программе вам нужно около 10 различных пакетов, чтобы заставить его работать.
См https://docs.python.org/2/tutorial/modules.html#intra-package-references – jonrsharpe
@jonrsharpe это будет работать, но тогда я должен был бы добавить t до примерно 50 заявлений на импорт. Мне нужно добавить это ко всем операторам импорта foo.py и bar.py, а также ко всем остальным пакетам. – Admiralmatt
Ну, почему они были написаны так в первую очередь? Вы недавно изменили/реструктурировали свой пакет (wa-hey!)? – jonrsharpe