Проверьте, требует ли пакет Python средства сборки Visual Studio - PullRequest
0 голосов
/ 31 декабря 2018

Начиная с этого предыдущего вопроса SO , я понимаю, что некоторые пакеты python используют Visual Studio Build Tools для компиляции исходников из C в Windows.

Я хочу избегать использования пакетов python, требующихVisual Studio Build Tools в моих проектах с открытым исходным кодом.Я не хочу заставлять моих пользователей с открытым исходным кодом устанавливать инструменты сборки для моего приложения на python.Это похоже на значительное снижение удобства использования и усложняет установку.

Как определить, какие пакеты Python с открытым исходным кодом требуют Visual Studio Build Tools? Я проверил pypi.org иlibrary.io, а также просмотрел requirements.txt в репозитории GitHub каждого пакета.Я не могу найти какие-либо требования для Visual Studio Build Tools, но когда я пытаюсь pip install на пакете, он говорит, что он требует Build Tools ...

Я нашел этот сайт предварительноСкомпилированные библиотеки Python из другого поста SO.Можно ли предположить, что для любой библиотеки из этого списка требуются инструменты сборки?Тем не менее, я предполагаю, что этот список не является исчерпывающим.Есть ли лучший источник информации?

Обратите внимание, что я НЕ спрашиваю, как установить Visual Studio Build Tools.Заранее спасибо за любую помощь!

1 Ответ

0 голосов
/ 08 января 2019

Я разместил это на Reddit и получил следующий ответ, который я считаю правильным.Не стесняйтесь добавлять другой ответ, если это необходимо.

По сути, ответом может быть любой случай, когда пакет должен скомпилировать C-код для сборки.Это не очевидно с точки зрения требований к пакетам, потому что команды сборки, предоставляемые инструментами установки, автоматически ищут Visual Studio в Windows.

В файле конфигурации distutils вы можете установить компилятор на ваш выбор: https://docs.python.org/3/install/index.html#using-non-microsoft-compilers-on-windows,И затем при установке через pip вы можете выбрать параметры --no-binary, чтобы убедиться, что вы не получаете двоичные файлы, предварительно скомпилированные Visual Studio: https://pip.pypa.io/en/stable/reference/pip_install/#cmdoption-no-binary

Вас также может заинтересовать conda-forgeкоторый предоставляет открытый исходный код для предоставления множества двоичных файлов через менеджер пакетов conda: https://conda -forge.org /

Уточните, есть ли способ обнаружитьиспользование компиляторов в произвольном пакете python:

Я предполагаю, что многие пакеты будут иметь distutils.core.Extension, вызываемый в какой-то момент в их файле setup.py: https://docs.python.org/3/extending/building.html#building-c-and-c-extensions-with-distutils

Хотя setup.py позволяет вам вызывать произвольный код Python, чтобы фактическая компиляция C могла быть скрыта где-то совершенно иначе или даже использовать совершенно другой процесс сборки.

В основном, если для лицензии или соблюдения принципов FOSS важноваше приложение вам нужно либо основывать цепочку зависимостей на работе, которую уже сделали другие люди (например, conda-forge), либо вам нужно тратить времямы действительно изучаем состояние каждой используемой вами зависимости: /

...