Соберите колесо / яйцо и все зависимости для проекта Python

22

Чтобы выполнить проект python внутри нашей корпорации, мне нужно сделать устанавливаемый дистрибутив.

Это должно включать:

  • Яйцо или whl для моего проекта
  • Яйцо или whl для каждой зависимости проекта
  • (необязательно) создайте файл requirements.txt, в котором перечислены все устанавливаемые компоненты для этой версии.

Есть ли легкий плагин (например, альтернатива bdist_wheel), который не только скомпилирует одно колесо, но также и компоненты проекта?

Очевидно, что я могу script, но я надеялся, что может быть короткое сокращение, которое строит зависимости пакета + меньше.

Это должно работать на Python 2.7 на Windows + Linux.

Теги:
python-wheel
egg

2 ответа

26
Лучший ответ

Вам нужно будет создать файл setup.py для вашего пакета. Убедитесь, что у вас установлены самые последние setuptools и pip. Затем запустите следующее:

python setup.py bdist_wheel

Это создаст файл колес для вашего пакета. Это предполагает, что у вас нет заголовков C/С++, библиотек DLL и т.д. Если вы это сделаете, вам, вероятно, придется сделать гораздо больше работы.

Чтобы получить зависимости, вам нужно создать файл requirements.txt и запустить следующее:

pip wheel -r requirements.txt

Если ваш пакет не включен в PyPI, вам придется вручную скопировать файл пакета в папку с колесом, созданную этой командой. Для получения дополнительной информации см. Следующую замечательную статью:

  • 0
    Изменилась ли необходимость вручную копировать диски для пакетов, не включенных в PyPi, с 2014 года на 2018 год? Я не мог найти официальную дискуссию
  • 0
    Вы можете использовать pip для установки, используя путь к файлу колеса или URL вместо PyPI.
24

С помощью последних pip и wheel вы можете просто запустить

pip wheel .

в папке проекта, даже если ваше приложение не находится на PyPi. Все колеса будут храниться в ./wheelhouse. Однако, когда я это пробовал, он пропустил одну из моих зависимостей, и мне нужно было вручную ее создать. Не знаю, почему.

  • 1
    Он ищет мои локальные пакеты на pypi, поэтому он не работает. Вместо этого я сначала запускаю python setup.py bdist_wheel , а затем запускаю pip wheel -r requirements.txt needs.txt для пакетов pypi.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню