FindPython2
Новое в версии 3.12.
Поиск интерпретатора, компилятора и среды разработки Python 2 (включая каталоги заголовочных файлов и библиотеки).
При запросе версии её можно указать как простое значение или диапазон. Подробное описание использования и возможностей диапазона версий см. в команде find_package().
Поддерживаются следующие компоненты:
-
Interpreter: поиск интерпретатора Python 2 -
Compiler: поиск компилятора Python 2. Предлагается только для IronPython. -
Development: поиск артефактов разработки (каталоги заголовочных файлов и библиотеки). Этот компонент включает два подкомпонента, которые можно указывать независимо:-
Development.Module: поиск артефактов для разработки модулей Python 2. -
Development.Embed: поиск артефактов для разработки встраивания Python 2.
-
-
NumPy: поиск каталогов заголовочных файлов NumPy.
Если не указаны COMPONENTS, предполагается Interpreter.
Если указан компонент Development, это подразумевает подкомпоненты Development.Module и Development.Embed.
Для обеспечения согласованных версий между компонентами Interpreter, Compiler, Development (или одним из его подкомпонентов) и NumPy, укажите все компоненты одновременно:
find_package (Python2 COMPONENTS Interpreter Development)
Этот модуль ищет только версию 2 Python. Этот модуль может использоваться совместно с модулем FindPython3 для использования обеих версий Python.
Модуль FindPython можно использовать, если версия Python не имеет значения.
Примечание
Если оба компонента Interpreter и Development (или один из его подкомпонентов) указаны, этот модуль ищет только интерпретатор с той же архитектурой платформы, что и определённая конфигурацией CMake. Это ограничение не применяется, если указан только компонент Interpreter.
Импортированные целевые объекты
Этот модуль определяет следующие Импортированные целевые объекты (когда CMAKE_ROLE равно PROJECT):
-
Python2::Interpreter -
Интерпретатор Python 2. Целевой объект определён, если найден компонент
Interpreter. -
Python2::Compiler -
Компилятор Python 2. Целевой объект определён, если найден компонент
Compiler. -
Python2::Module -
Библиотека Python 2 для модулей Python. Целевой объект определён, если найден компонент
Development.Module. -
Python2::Python -
Библиотека Python 2 для встраивания Python. Целевой объект определён, если найден компонент
Development.Embed. -
Python2::NumPy -
Библиотека NumPy для Python 2. Целевой объект определён, если найден компонент
NumPy.
Переменные результатов
Этот модуль установит в вашем проекте следующие переменные (см. Стандартные имена переменных):
-
Python2_FOUND -
Система имеет запрошенные компоненты Python 2.
-
Python2_Interpreter_FOUND -
Система имеет интерпретатор Python 2.
-
Python2_EXECUTABLE -
Путь к интерпретатору Python 2.
-
Python2_INTERPRETER_ID -
- Короткая строка, уникальная для интерпретатора. Возможные значения:
-
- Python
- ActivePython
- Anaconda
- Canopy
- IronPython
- PyPy
-
Python2_STDLIB -
Стандартный независимый от платформы каталог установки.
Информация, возвращённая
distutils.sysconfig.get_python_lib(plat_specific=False,standard_lib=True), в противном случаеsysconfig.get_path('stdlib'). -
Python2_STDARCH -
Стандартный зависимый от платформы каталог установки.
Информация, возвращённая
distutils.sysconfig.get_python_lib(plat_specific=True,standard_lib=True), в противном случаеsysconfig.get_path('platstdlib'). -
Python2_SITELIB -
Внештатный независимый от платформы каталог установки.
Информация, возвращённая
distutils.sysconfig.get_python_lib(plat_specific=False,standard_lib=False), в противном случаеsysconfig.get_path('purelib'). -
Python2_SITEARCH -
Внештатный зависимый от платформы каталог установки.
Информация, возвращённая
distutils.sysconfig.get_python_lib(plat_specific=True,standard_lib=False), в противном случаеsysconfig.get_path('platlib'). -
Python2_Compiler_FOUND -
Система имеет компилятор Python 2.
-
Python2_COMPILER -
Путь к компилятору Python 2. Предлагается только для IronPython.
-
Python2_COMPILER_ID -
- Короткая строка, уникальная для компилятора. Возможные значения:
-
- IronPython
-
Python2_DOTNET_LAUNCHER -
Интерпретатор
.Net. Используется только реализациейIronPython. -
Python2_Development_FOUND -
Система имеет артефакты разработки Python 2.
-
Python2_Development.Module_FOUND -
Система имеет артефакты разработки Python 2 для модулей Python.
-
Python2_Development.Embed_FOUND -
Система имеет артефакты разработки Python 2 для встраивания Python.
-
Python2_INCLUDE_DIRS -
Каталоги заголовочных файлов Python 2.
-
Python2_LINK_OPTIONS -
Параметры линковки Python 2. Некоторые конфигурации требуют определённых параметров линковки для корректной сборки и выполнения.
-
Python2_LIBRARIES -
Библиотеки Python 2.
-
Python2_LIBRARY_DIRS -
Каталоги библиотек Python 2.
-
Python2_RUNTIME_LIBRARY_DIRS -
Каталоги библиотек времени выполнения Python 2.
-
Python2_VERSION -
Версия Python 2.
-
Python2_VERSION_MAJOR -
Главная версия Python 2.
-
Python2_VERSION_MINOR -
Дополнительная версия Python 2.
-
Python2_VERSION_PATCH -
Версия патча Python 2.
-
Python2_PyPy_VERSION -
Версия PyPy Python 2.
-
Python2_NumPy_FOUND -
Система имеет NumPy.
-
Python2_NumPy_INCLUDE_DIRS -
Каталоги заголовочных файлов NumPy.
-
Python2_NumPy_VERSION -
Версия NumPy.
Подсказки
-
Python2_ROOT_DIR -
Определяет корневой каталог установки Python 2.
-
Python2_USE_STATIC_LIBS -
- Если не определено, поиск общих и статических библиотек будет производиться в этом порядке.
- Если установлено в TRUE, поиск будет осуществляться только статических библиотек.
- Если установлено в FALSE, поиск будет осуществляться только общих библиотек.
-
Python2_FIND_STRATEGY -
Эта переменная определяет, как будет осуществляться поиск. Переменная
Python2_FIND_STRATEGYможет быть установлена в одно из следующих значений:-
VERSION: Попытка найти последнюю версию во всех указанных местах. Это значение по умолчанию, если политикаCMP0094не определена или установлена вOLD. -
LOCATION: Остановка поиска как только будет найдена версия, удовлетворяющая ограничениям по версии. Это значение по умолчанию, если политикаCMP0094установлена вNEW.
-
-
Python2_FIND_REGISTRY -
В Windows переменная
Python2_FIND_REGISTRYопределяет порядок приоритета между записями реестра и переменными среды. ПеременнаяPython2_FIND_REGISTRYможет быть установлена в одно из следующих значений:-
FIRST: Попытка использовать реестр перед переменными среды. Это значение по умолчанию. -
LAST: Попытка использовать реестр после переменных среды. -
NEVER: Никогда не пытаться использовать реестр.
-
-
Python2_FIND_FRAMEWORK -
В macOS переменная
Python2_FIND_FRAMEWORKопределяет порядок приоритета между компонентами пакетов в стиле Apple и unix-стиле. Эта переменная может принимать те же значения, что и переменнаяCMAKE_FIND_FRAMEWORK.Примечание
Значение
ONLYне поддерживается, поэтому будет использоваться значениеFIRST.Если
Python2_FIND_FRAMEWORKне определено, будет использоваться переменнаяCMAKE_FIND_FRAMEWORK, если таковая существует. -
Python2_FIND_VIRTUALENV -
Эта переменная определяет обработку виртуальных сред, управляемых
virtualenvилиconda. Она имеет смысл только при активной виртуальной среде (т.е. после выполнения скриптаactivate). В этом случае она имеет приоритет над переменнымиPython2_FIND_REGISTRYиCMAKE_FIND_FRAMEWORK. ПеременнаяPython2_FIND_VIRTUALENVможет быть установлена в одно из следующих значений:-
FIRST: Виртуальная среда используется перед другими стандартными путями поиска интерпретатора. Это значение по умолчанию. -
ONLY: Используется только виртуальная среда для поиска интерпретатора. -
STANDARD: Виртуальная среда не используется для поиска интерпретатора, но переменная средыPATHвсегда учитывается. В этом случае переменнаяPython2_FIND_REGISTRY(Windows) илиCMAKE_FIND_FRAMEWORK(macOS) может быть установлена со значениемLASTилиNEVERдля предпочтительного выбора интерпретатора из виртуальной среды.
Примечание
Если требуется компонент
Development, настоятельно рекомендуется также включить компонентInterpreter, чтобы получить ожидаемый результат. -
-
Python2_FIND_IMPLEMENTATIONS -
Эта переменная определяет в упорядоченном списке различные реализации, которые будут проверяться. Переменная
Python2_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, может быть выбран, потому что, например, сPython2_FIND_STRATEGY=LOCATION, каждое место будет сначала проверяться на наличиеIronPython, а затем наCPython.Примечание
Когда
IronPythonуказано, на платформах, отличных отWindows, ожидается доступность интерпретатора.Net(т.е. командаmono), через переменнуюPATH. -
Спецификация артефактов
Для решения специальных случаев можно указать артефакты напрямую, установив следующие переменные:
-
Python2_EXECUTABLE -
Путь к интерпретатору.
-
Python2_COMPILER -
Путь к компилятору.
-
Python2_DOTNET_LAUNCHER -
Интерпретатор
.Net. Используется только реализациейIronPython. -
Python2_LIBRARY -
Путь к библиотеке. Будет использован для вычисления переменных
Python2_LIBRARIES,Python2_LIBRARY_DIRSиPython2_RUNTIME_LIBRARY_DIRS. -
Python2_INCLUDE_DIR -
Путь к каталогу заголовков
Python. Будет использован для вычисления переменнойPython2_INCLUDE_DIRS. -
Python2_NumPy_INCLUDE_DIR -
Путь к каталогу заголовков
NumPy. Будет использован для вычисления переменнойPython2_NumPy_INCLUDE_DIRS.
Примечание
Все пути должны быть абсолютными. Любой артефакт, указанный относительным путем, будет проигнорирован.
Примечание
При указании артефакта все HINTS будут проигнорированы, и поиск этого артефакта не будет осуществлен.
Если указано более одного артефакта, пользователь несет ответственность за обеспечение согласованности различных артефактов.
По умолчанию этот модуль поддерживает несколько вызовов в разных каталогах проекта с различными требованиями к версии/компоненту, обеспечивая корректные и согласованные результаты для каждого вызова. Для поддержки этого поведения кеш CMake не используется традиционным способом, что может быть проблематично для интерактивного определения. Таким образом, чтобы включить также интерактивное задание, поведение модуля можно контролировать с помощью следующей переменной:
-
Python2_ARTIFACTS_INTERACTIVE -
Выбирает поведение модуля. Это булева переменная:
- Если установлено в
TRUE, создаются записи кэша CMake для указанных выше переменных задания артефактов, чтобы пользователи могли редактировать их интерактивно. Это отключает поддержку нескольких требований к версии/компоненту. - Если установлено в
FALSEили не определено, разрешается поддержка нескольких требований к версии/компоненту.
- Если установлено в
Команды
Этот модуль определяет команду Python2_add_library (когда CMAKE_ROLE равна PROJECT), которая имеет ту же семантику, что и add_library() и добавляет зависимость к целевому объекту Python2::Python, или, когда тип библиотеки MODULE, к целевому объекту Python2::Module, и учитывает правила именования модулей Python:
Python2_add_library (<name> [STATIC | SHARED | MODULE]
<source1> [<source2> ...])
Если тип библиотеки не указан, предполагается значение MODULE.
© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.19/module/FindPython2.html