Python импорт для непересекающихся проектов - PullRequest
0 голосов
/ 13 марта 2020

У меня всегда были проблемы с импортом, и я читал об этом разные статьи, но до сих пор не понимаю. Я использую 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 при использовании различных способов доступа к файлам.

...