Вопрос

Я создал python egg с помощью setuptools и хотел бы получить доступ к его метаданным во время выполнения.В настоящее время я работаю над этим:

import pkg_resources
dist = pkg_resources.get_distribution("my_project")
print(dist.version)

но это, вероятно, работало бы неправильно, если бы у меня было установлено несколько версий одного и того же egg.И если у меня есть как установленное egg, так и версия для разработки, то запуск этого кода из версии для разработки приведет к получению версии установленного egg.

Итак, как мне получить метаданные для мой egg - это не какое-то случайное совпадающее яйцо, установленное в моей системе?

Это было полезно?

Решение

Я тоже немного новичок в Python, но из того, что я понимаю:

Хотя вы можете установить несколько версий " одного и того же " egg (с тем же именем), только один из них будет доступен для любого конкретного фрагмента кода во время выполнения (в зависимости от вашего метода обнаружения). Поэтому, если ваше яйцо является тем, которое вызывает этот код, оно должно быть уже выбрано как версия my_project для этого кода, и ваш доступ будет к вашей собственной версии.

Другие советы

Вот именно.Таким образом, вы должны быть в состоянии получить информацию только для доступного в данный момент egg (единственного числа) библиотеки.Если у вас есть несколько файлов egg одной и той же библиотеки в папке site-packages, проверьте файл easy-install.pth в той же папке, чтобы увидеть, какой файл egg действительно используется :-)

На сайте примечание:Именно в этом смысл таких систем, как zc.buildout, которые позволяют вам определить точную версию библиотеки, которая будет доступна вам, например, при разработке приложения или обслуживании веб-приложения.Таким образом, вы можете, например, использовать версию 1.0 для одного проекта и 1.2 для другого.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top