У меня всегда были проблемы с импортом, и я читал об этом разные статьи, но до сих пор не понимаю. Я использую python 3.
Допустим, у меня есть файл, который содержит определения классов, такие как «bird.py», и файл, который содержит функции «test.py».
Сейчас Я хочу иметь пару папок с экспериментом. В каждом файле эксперимента я создам файл (например, pavlovian.py), который импортирует bird.py & test.py, запускает эксперимент и выгружает данные и графики в одну и ту же папку. Так это будет выглядеть примерно так:
─ project
├── bird.py
├── test.py
├── experiment1
│ ├── pavlovian.py
│ ├── data_dump.npy
│ └── graph.png
├── experiment2
pavlovian.py всегда будет выдавать ошибки при попытке импорта. Я попытался прочитать об относительном и абсолютном импорте здесь: статья об импорте , но абсолютный импорт требует, чтобы я каждый раз редактировал путь, неочевидным способом. Что касается относительного импорта, он не работает, кажется, если я не добавлю много файлов установки, как это: требования к упаковке . Я видел некоторые излишне сложные вещи с пакетом os.path.
Какие здесь лучшие практики? У меня нет основного файла, в отличие от этот вопрос Весь проект на самом деле не унифицирован. Различные эксперименты совершенно разные и не должны выполняться вместе. Папок эксперимента будет много, и в конечном итоге я, возможно, захочу реорганизовать, поместив некоторые из папок эксперимента в папки, название которых является видом эксперимента.
один вариант: я мог бы просто скопировать bird.py & test.py в каждую папку эксперимента. Затем я бы использовал import bird.py и import test.py, и в соответствии со статьей это абсолютный импорт, но мне он кажется относительным? Кроме того, это решение кажется уродливым, и если я внесу изменения в bird.py позже, мне придется вручную отредактировать все остальные его копии.
другой вариант: я Python ноутбуков. Тем не менее, некоторые пакеты не работают в этой среде.
Есть ли немного другой способ организации. Я особенно запутался, потому что иногда "." или "/" или "\" или "\\" все действуют как разделители в пути к файлу windows при использовании различных способов доступа к файлам.