Чтобы добавить немного подробностей к другим ответам, эквивалентом драгоценных камней Ruby являются "яйца" Python.Я не знаю Ruby, поэтому я не уверен, насколько точна эта эквивалентность, но яйца в основном являются установочными файлами для пакетов Python - они дают Python информацию о том, какие пакеты установлены.Яйцо обычно создается путем запуска ./setup.py install
из каталога пакета или с помощью setuptools, то есть pip install NAME-OF-PACKAGE
(последний метод обычно проще, поскольку он загружает файлы для вас и устанавливает все необходимые зависимости).Следует отметить, что любой пакет (любая папка с файлом __init__.py
в нем) или модуль, помещенный в PYTHONPATH, может быть импортирован Python;их установка просто помогает отслеживать, какие пакеты используются, и облегчает работу со сложными пакетами, которые имеют много зависимостей.
В Django, как упоминал @EinLama, эти дополнительные пакеты функционируют как приложения(они обычно включают файлы, такие как models.py, views.py, urls.py и т. д.).Некоторые из них фактически устанавливаются Python, как описано выше, а некоторые являются просто папками, которые должны быть помещены в вашу PYTHONPATH (в обоих случаях вам также необходимо добавить их в установленные приложения в файле settings.py, чтобы Django знал о них),Кроме того, я часто сталкиваюсь с пакетами (с открытым исходным кодом), которые делают почти то, что я хочу, но не совсем, или которые разработаны таким образом, что детали, которые необходимо изменить для интеграции приложения в мой проект, жестко запрограммированы.В этих случаях я часто помещаю приложение прямо в папку своего проекта, где я могу вносить изменения по мере необходимости и получать к нему доступ, как будто это любое из моих других приложений.В этом случае пакет, конечно, ограничен этим конкретным проектом Django - он никогда не устанавливается Python и не создается яйцо.
Надеюсь, что это немного прояснит ситуацию.