FindPython3
Новое в версии 3.12.
Найти интерпретатор, компилятор и среду разработки Python 3 (включая каталоги заголовков и библиотеки).
Новое в версии 3.19: При запросе версии её можно указать как простое значение или в виде диапазона. Подробное описание использования и возможностей диапазонов версий см. в команде find_package().
Поддерживаются следующие компоненты:
-
Interpreter: поиск интерпретатора Python 3 -
Compiler: поиск компилятора Python 3. Доступен только для IronPython. -
Development: поиск артефактов разработки (каталоги заголовков и библиотеки).Новое в версии 3.18: Этот компонент включает два подкомпонента, которые можно указывать независимо:
-
Development.Module: поиск артефактов для разработки модулей Python 3. -
Development.Embed: поиск артефактов для разработки встраивания Python 3.
Новое в версии 3.26:
-
Development.SABIModule: поиск артефактов для разработки модулей Python 3 с использованием стабильного интерфейса прикладного программирования. Этот компонент доступен только для версии3.2и выше.
-
-
NumPy: поиск каталогов заголовков NumPy.
Новое в версии 3.14: Добавлен компонент NumPy.
Если не указаны COMPONENTS, предполагается Interpreter.
Если указан компонент Development, это подразумевает подкомпоненты Development.Module и Development.Embed.
Для обеспечения согласованных версий между компонентами Interpreter, Compiler, Development (или одним из его подкомпонентов) и NumPy, необходимо указать все компоненты одновременно:
find_package (Python3 COMPONENTS Interpreter Development)
Этот модуль ищет только версию 3 Python. Этот модуль можно использовать одновременно с модулем FindPython2 для использования обеих версий Python.
Модуль FindPython можно использовать, если версия Python для вас не важна.
Примечание
Если оба компонента Interpreter и Development (или один из его подкомпонентов) указаны, этот модуль ищет только интерпретатор с той же архитектурой платформы, что и та, которая определена конфигурацией CMake. Это ограничение не применяется, если указан только компонент Interpreter.
Импортированные цели
Этот модуль определяет следующие импортированные цели:
Изменено в версии 3.14: Импортированные цели создаются только тогда, когда CMAKE_ROLE равно PROJECT.
-
Python3::Interpreter -
Интерпретатор Python 3. Эта цель определена только в случае обнаружения компонента
Interpreter. -
Python3::InterpreterDebug -
Новое в версии 3.30.
Отладочный интерпретатор Python 3. Эта цель определена только в случае обнаружения компонента
Interpreterи определения переменнойPython3_EXECUTABLE_DEBUG. Цель определена только на платформеWindows. -
Python3::InterpreterMultiConfig -
Новое в версии 3.30.
Интерпретатор Python 3. Будет использоваться релизная или отладочная версия интерпретатора в зависимости от контекста (платформа, конфигурация). Эта цель определена только в случае обнаружения компонента
Interpreter. -
Python3::Compiler -
Компилятор Python 3. Эта цель определена только в случае обнаружения компонента
Compiler. -
Python3::Module -
Новое в версии 3.15.
Библиотека Python 3 для модулей Python. Цель определена, если найден компонент
Development.Module. -
Python3::SABIModule -
Новое в версии 3.26.
Библиотека Python 3 для модулей Python, использующая стабильный интерфейс прикладного программирования. Цель определена, если найден компонент
Development.SABIModule. -
Python3::Python -
Библиотека Python 3 для встраивания Python. Цель определена, если найден компонент
Development.Embed. -
Python3::NumPy -
Новое в версии 3.14.
Библиотека NumPy для Python 3. Цель определена, если найден компонент
NumPy.
Переменные результатов
Этот модуль установит следующие переменные в вашем проекте (см. Стандартные имена переменных):
-
Python3_FOUND -
Система имеет запрошенные компоненты Python 3.
-
Python3_Interpreter_FOUND -
Система имеет интерпретатор Python 3.
-
Python3_EXECUTABLE -
Путь к интерпретатору Python 3.
-
Python3_EXECUTABLE_DEBUG -
Новое в версии 3.30.
Путь к отладочному интерпретатору Python 3. Он определен только на платформе
Windows. -
Python3_INTERPRETER -
Новое в версии 3.30.
Путь к интерпретатору Python 3, определенный как
generator expressionдля выбора переменнойPython3_EXECUTABLEилиPython3_EXECUTABLE_DEBUGв зависимости от контекста (платформа, конфигурация). -
Python3_INTERPRETER_ID -
- Короткая строка, уникальная для интерпретатора. Возможные значения:
-
- Python
- ActivePython
- Anaconda
- Canopy
- IronPython
- PyPy
-
Python3_STDLIB -
Стандартный независимый от платформы каталог установки.
Информация, возвращаемая
sysconfig.get_path('stdlib'). -
Python3_STDARCH -
Стандартный каталог установки, зависящий от платформы.
Информация, возвращаемая
sysconfig.get_path('platstdlib'). -
Python3_SITELIB -
Внеплатформенный каталог установки сторонних библиотек.
Информация, возвращаемая
sysconfig.get_path('purelib'). -
Python3_SITEARCH -
Зависимый от платформы каталог установки сторонних библиотек.
Информация, возвращаемая
sysconfig.get_path('platlib'). -
Python3_SOABI -
Новое в версии 3.17.
Расширение для модулей.
Информация, вычисленная из
sysconfig.get_config_var('EXT_SUFFIX')илиsysconfig.get_config_var('SOABI')илиpython3-config --extension-suffix. -
Python3_SOSABI -
Новое в версии 3.26.
Расширение для модулей, использующих стабильный интерфейс прикладного программирования.
Информация, вычисленная из
importlib.machinery.EXTENSION_SUFFIXESесли был указан компонентInterpreter. В противном случае расширение равноabi3, за исключениемWindows,MSYSиCYGWIN, для которых оно пустое. -
Python3_Compiler_FOUND -
Система имеет компилятор Python 3.
-
Python3_COMPILER -
Путь к компилятору Python 3. Доступен только для IronPython.
-
Python3_COMPILER_ID -
- Короткая строка, уникальная для компилятора. Возможные значения:
-
- IronPython
-
Python3_DOTNET_LAUNCHER -
Новое в версии 3.18.
Интерпретатор
.Net. Используется только реализациейIronPython.
Python3_Development_FOUND
Система имеет артефакты разработки Python 3.
-
Python3_Development.Module_FOUND -
Новое в версии 3.18.
Система имеет артефакты разработки Python 3 для модулей Python.
-
Python3_Development.SABIModule_FOUND -
Новое в версии 3.26.
Система имеет артефакты разработки Python 3 для модулей Python, использующих стабильный интерфейс прикладного программирования.
-
Python3_Development.Embed_FOUND -
Новое в версии 3.18.
Система имеет артефакты разработки Python 3 для встраивания Python.
Python3_INCLUDE_DIRS
Каталоги заголовков Python 3.
-
Python3_DEFINITIONS -
Новое в версии 3.30.3.
Определения препроцессора Python 3.
-
Python3_DEBUG_POSTFIX -
Приставка для модуля отладки Python. Эта переменная может быть использована для определения свойства целевого объекта
DEBUG_POSTFIX. -
Python3_LINK_OPTIONS -
Новое в версии 3.19.
Параметры ссылок Python 3. Некоторые конфигурации требуют определённых параметров ссылок для корректной сборки и выполнения.
-
Python3_LIBRARIES -
Библиотеки Python 3.
-
Python3_LIBRARY_DIRS -
Директории библиотек Python 3.
-
Python3_RUNTIME_LIBRARY_DIRS -
Директории библиотек времени выполнения Python 3.
-
Python3_SABI_LIBRARIES -
Новое в версии 3.26.
Библиотеки Python 3 для стабильного интерфейса прикладных библиотек.
-
Python3_SABI_LIBRARY_DIRS -
Новое в версии 3.26.
Директории библиотек Python 3
SABI. -
Python3_RUNTIME_SABI_LIBRARY_DIRS -
Новое в версии 3.26.
Директории библиотек времени выполнения Python 3
SABI. -
Python3_VERSION -
Версия Python 3.
-
Python3_VERSION_MAJOR -
Основная версия Python 3.
-
Python3_VERSION_MINOR -
Дополнительная версия Python 3.
-
Python3_VERSION_PATCH -
Вспомогательная версия Python 3.
-
Python3_PyPy_VERSION -
Новое в версии 3.18.
Версия Python 3 PyPy.
-
Python3_NumPy_FOUND -
Новое в версии 3.14.
Система имеет NumPy.
-
Python3_NumPy_INCLUDE_DIRS -
Новое в версии 3.14.
Директории заголовочных файлов NumPy.
-
Python3_NumPy_VERSION -
Новое в версии 3.14.
Версия NumPy.
Подсказки
-
Python3_ROOT_DIR -
Определите корневую директорию установки Python 3.
-
Python3_USE_STATIC_LIBS -
- Если не определено, поиск общих и статических библиотек будет выполняться в этом порядке.
- Если установлено в TRUE, поиск будет выполняться только для статических библиотек.
- Если установлено в FALSE, поиск будет выполняться только для общих библиотек.
Примечание
Этот подсказка будет проигнорирована на
Windows, так как статические библиотеки недоступны на этой платформе. -
Python3_FIND_ABI -
Новое в версии 3.16.
Эта переменная определяет, какие ABI, как определено в PEP 3149, должны быть проверены.
Переменная
Python3_FIND_ABIпредставляет собой 4-кортеж, указывающий в этом порядкеpydebug(d),pymalloc(m),unicode(u) иgil_disabled(t).Новое в версии 3.30: Добавляется четвёртый элемент, определяющий флаг
gil_disabled(то есть, многопоточный Python), который является необязательным. Если не указан, значение равноOFF.Каждый элемент может быть задан одним из следующих значений:
-
ON: Соответствующий флаг выбран. -
OFF: Соответствующий флаг не выбран. -
ANY: Будут проверены оба варианта (ONиOFF).
Примечание
Если
Python3_FIND_ABIне определено, будут проверены все ABI, за исключением флагаgil_disabled.На основе этого 4-кортежа будут проверены различные ABI, начиная с наиболее специализированных и заканчивая наиболее общими. Кроме того, когда
ANYуказано дляpydebugиgil_disabled, версииdebugиfree threadedбудут проверены после версийnon-debugиnon-gil-disabled.Например, если у нас есть:
set (Python3_FIND_ABI "ON" "ANY" "ANY" "ON")
Следующие комбинации флагов будут добавлены в имена артефактов в указанном порядке:
tdmu,tdm,tdu, иtd.И для поиска всех возможных ABI:
set (Python3_FIND_ABI "ANY" "ANY" "ANY" "ANY")
Следующие комбинации, в указанном порядке, будут использоваться:
mu,m,u,<empty>,dmu,dm,du,d,tmu,tm,tu,t,tdmu,tdm,tdu, иtd.Примечание
Эта подсказка полезна только на
POSIXсистемах, за исключением флагаgil_disabled. Таким образом, наWindowsсистемах, когдаPython_FIND_ABIопределено, дистрибутивыPythonс сайта python.org будут найдены только если значение каждого флага равноOFFилиANY, за исключением четвёртого (gil_disabled). -
-
Python3_FIND_STRATEGY -
Новое в версии 3.15.
Эта переменная определяет способ выполнения поиска. Переменная
Python3_FIND_STRATEGYможет быть установлена в одно из следующих значений:-
VERSION: Попытаться найти последнюю версию во всех указанных местах. Это значение по умолчанию, если политикаCMP0094не определена или установлена вOLD. -
LOCATION: Остановить поиск, как только будет найдена версия, удовлетворяющая ограничениям версии. Это значение по умолчанию, если политикаCMP0094установлена вNEW.
См. также
Python3_FIND_UNVERSIONED_NAMES. -
-
Python3_FIND_REGISTRY -
Новое в версии 3.13.
В Windows переменная
Python3_FIND_REGISTRYопределяет порядок приоритета между записями реестра и переменными среды. ПеременнаяPython3_FIND_REGISTRYможет быть установлена в одно из следующих значений:-
FIRST: Попытаться использовать реестр перед переменными среды. Это значение по умолчанию. -
LAST: Попытаться использовать реестр после переменных среды. -
NEVER: Никогда не пытаться использовать реестр.
-
-
Python3_FIND_FRAMEWORK -
Новое в версии 3.15.
В macOS переменная
Python3_FIND_FRAMEWORKопределяет порядок приоритета между компонентами пакетов в стиле Apple и в стиле Unix. Эта переменная может принимать те же значения, что и переменнаяCMAKE_FIND_FRAMEWORK.Примечание
Значение
ONLYне поддерживается, поэтому используется значениеFIRST.Если
Python3_FIND_FRAMEWORKне определено, будет использоваться переменнаяCMAKE_FIND_FRAMEWORK, если она есть. -
Python3_FIND_VIRTUALENV -
Новое в версии 3.15.
Эта переменная определяет обработку виртуальных сред, управляемых
virtualenvилиconda. Она имеет значение только при активной виртуальной среде (т.е. при выполнении скриптаactivate). В этом случае она имеет приоритет над переменнымиPython3_FIND_REGISTRYиCMAKE_FIND_FRAMEWORK. ПеременнаяPython3_FIND_VIRTUALENVможет быть установлена в одно из следующих значений:-
FIRST: Виртуальная среда используется перед другими стандартными путями для поиска интерпретатора. Это значение по умолчанию. -
ONLY: Используется только виртуальная среда для поиска интерпретатора. -
STANDARD: Виртуальная среда не используется для поиска интерпретатора, но переменная средыPATHвсегда учитывается. В этом случае переменнаяPython3_FIND_REGISTRY(Windows) илиCMAKE_FIND_FRAMEWORK(macOS) может быть установлена со значениемLASTилиNEVERдля предпочтения интерпретатора из виртуальной среды.
Новое в версии 3.17: Добавлена поддержка
condaсред.Примечание
Если запрашивается компонент
Development, настоятельно рекомендуется также включить компонентInterpreterдля получения ожидаемого результата. -
-
Python3_FIND_IMPLEMENTATIONS -
Новое в версии 3.18.
Эта переменная определяет упорядоченный список различных реализаций, которые будут проверены. Переменная
Python3_FIND_IMPLEMENTATIONSможет принимать следующие значения:-
CPython: это стандартная реализация. Различные продукты, такие какAnacondaилиActivePython, полагаются на эту реализацию. -
IronPython: Эта реализация использует языкCSharpдля.NET FrameworkповерхDynamic Language Runtime(DLR). См. IronPython. -
PyPy: Эта реализация использует языкRPythonиRPython translation toolchainдля создания интерпретатора Python. См. PyPy.
Значение по умолчанию:
- Платформа Windows:
CPython,IronPython - Другие платформы:
CPython
Примечание
Эта подсказка имеет самый низкий приоритет среди всех подсказок, поэтому даже если, например, вы укажете
IronPythonв первую очередь, аCPythonво вторую, может быть выбран продукт Python, основанный наCPython, потому что, например, сPython3_FIND_STRATEGY=LOCATION, каждое место будет проверяться сначала дляIronPythonи затем дляCPython.Примечание
Когда
IronPythonуказано, на платформах, отличных отWindows, ожидается, что интерпретатор.Net(т.е. командаmono) будет доступен через переменнуюPATH. -
-
Python3_FIND_UNVERSIONED_NAMES -
Новое в версии 3.20.
Эта переменная определяет, как будут производиться поиск общих имён. В настоящее время это относится только к общим именам интерпретатора, а именно
python3иpython. ПеременнаяPython3_FIND_UNVERSIONED_NAMESможет принимать следующие значения:-
FIRST: Общие имена проверяются перед более специализированными (например,python3.5). -
LAST: Общие имена проверяются после более специализированных. Это значение по умолчанию. -
NEVER: Общие имена вообще не проверяются.
См. также
Python3_FIND_STRATEGY. -
Спецификация артефактов
Новое в версии 3.16.
Для решения особых случаев можно напрямую указать артефакты, установив следующие переменные:
-
Python3_EXECUTABLE -
Путь к интерпретатору.
-
Python3_COMPILER -
Путь к компилятору.
-
Python3_DOTNET_LAUNCHER -
Новое в версии 3.18.
Интерпретатор
.Net. Используется только реализациейIronPython. -
Python3_LIBRARY -
Путь к библиотеке. Будет использоваться для вычисления переменных
Python3_LIBRARIES,Python3_LIBRARY_DIRSиPython3_RUNTIME_LIBRARY_DIRS. -
Python3_SABI_LIBRARY -
Новое в версии 3.26.
Путь к библиотеке для стабильного интерфейса прикладных бинарных файлов. Будет использоваться для вычисления переменных
Python3_SABI_LIBRARIES,Python3_SABI_LIBRARY_DIRSиPython3_RUNTIME_SABI_LIBRARY_DIRS. -
Python3_INCLUDE_DIR -
Путь к каталогу заголовков
Python. Будет использоваться для вычисления переменнойPython3_INCLUDE_DIRS. -
Python3_NumPy_INCLUDE_DIR -
Путь к каталогу заголовков
NumPy. Будет использоваться для вычисления переменнойPython3_NumPy_INCLUDE_DIRS.
Примечание
Все пути должны быть абсолютными. Любой артефакт, указанный относительным путем, будет проигнорирован.
Примечание
Когда артефакт указан, все HINTS будут проигнорированы, и поиск этого артефакта не будет выполнен.
Если указано более одного артефакта, пользователь несет ответственность за обеспечение согласованности различных артефактов.
По умолчанию этот модуль поддерживает несколько вызовов в различных каталогах проекта с различными требованиями к версиям/компонентам, обеспечивая правильные и согласованные результаты для каждого вызова. Для поддержки этого поведения кэш CMake не используется традиционным способом, что может быть проблематично для интерактивного задания. Поэтому, чтобы также включить интерактивное задание, поведение модуля можно контролировать с помощью следующей переменной:
-
Python3_ARTIFACTS_INTERACTIVE -
Новое в версии 3.18.
Выбирает поведение модуля. Это булева переменная:
- Если установлено в
TRUE: Создать записи в кэше CMake для вышеуказанных переменных спецификации артефакта, чтобы пользователи могли редактировать их интерактивно. Это отключает поддержку нескольких требований к версиям/компонентам. - Если установлено в
FALSEили не определено: Включить поддержку нескольких требований к версиям/компонентам.
- Если установлено в
Команды
Этот модуль определяет команду Python3_add_library (когда CMAKE_ROLE равно PROJECT), которая имеет ту же семантику, что и add_library() и добавляет зависимость к целевому объекту Python3::Python или, когда тип библиотеки MODULE, к целевому объекту Python3::Module или Python3::SABIModule (когда указан параметр USE_SABI) и учитывает правила именования Python-модулей:
Python3_add_library (<name> [STATIC | SHARED | MODULE [USE_SABI <version>] [WITH_SOABI]]
<source1> [<source2> ...])
Если тип библиотеки не указан, предполагается MODULE.
Новое в версии 3.17: Для типа библиотеки MODULE, если указан параметр WITH_SOABI, суффикс модуля будет включать значение Python3_SOABI, если оно есть.
Новое в версии 3.26: Для типа MODULE, если указан параметр USE_SABI, препроцессорное определение Py_LIMITED_API будет задано как PRIVATE, для целевого объекта <name> со значением, вычисленным из аргумента <version> ожидаемый формат для <version> — это major[.minor], где каждый компонент — числовое значение. Если указан компонент minor, версия должна быть не менее 3.2, что является версией, в которой был введен стабильный интерфейс прикладных бинарных файлов. Указание только основной версии 3 эквивалентно 3.2.
Если также указан параметр WITH_SOABI, суффикс модуля будет включать значение Python3_SOSABI, если оно есть.
Новое в версии 3.30: Для типа MODULE, свойство целевого объекта DEBUG_POSTFIX инициализируется значением переменной Python3_DEBUG_POSTFIX, если она определена.
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.30/module/FindPython3.html