У меня есть несколько наборов служебных функций, которые я написал для анализа научных данных. Например, для создания графиков я мог бы иметь файл с именем plotting_tools.py
Как создать локальный пакет Python для модулей, которые я использую для нескольких разных проектов.
В течение нескольких различных проектов в нескольких различных домашних каталогах и виртуальные среды, я мог бы использовать функции из plotting_tools.py
Один из способов сделать это, чтобы иметь копию plotting_tools.py
в каждом каталоге проекта, а затем просто запустить
from plotting_tools.py import *
в верхней части моей работы (например, в записной книжке Jupyter).
Однако этот подход имеет ограничения, поскольку, когда я обнаруживаю ошибку в plotting_tools.py
, мне приходится вручную обновлять каждую локальную копию. Другим вариантом является один каталог на моем компьютере, с которого я импортировать модуль с помощью importlib
from importlib.machinery import SourceFileLoader
foo = SourceFileLoader("plotting_tools","/Users/me/plotting_tools.py").load_module()
from plotting_tools.py import *
Это немного хрупким, потому что она имеет жесткий кодированный каталог, и инструменты, такие как autoreload()
перерыва.
Мне было любопытно, есть ли способ более эффективно справиться с этой проблемой, когда у меня есть какой-то локальный каталог со всеми моими файлами функций полезности, которые можно рассматривать как пакет (например, когда я делаю новый проект и виртуальную среду. Я могу просто установить текущую версию plotting_tools
в эту среду, а затем вручную обновить ее, если основная версия изменится). Лучше всего это сделать, чтобы использовать репозиторий GitHub для всех моих функций, или есть ли способ сделать это чисто локально?