Содержание страницы
9. Справочник API¶API Reference
9.1. distutils.core – Основная функциональность Distutils¶distutils.core – Core Distutils functionality
Модуль distutils.core – единственный модуль, который необходимо установить
для использования Distutils. Он предоставляет setup() (которая вызывается из
сценария setup). Косвенно предоставляет классы distutils.dist.Distribution и
distutils.cmd.Command.
-
distutils.core.setup(arguments)¶ Базовая универсальная функция, которая делает почти всё, что можно попросить у метода Distutils.
Функция setup принимает большое количество аргументов. Они перечислены в следующей таблице.
имя аргумента
значение
тип
имя
Название пакета
строка
version
Номер версии пакета; см.
distutils.versionстрока
описание
Краткое описание пакета (одна строка)
строка
long_description
Подробное описание пакета
строка
author
Имя автора пакета
строка
author_email
Адрес электронной почты автора пакета
строка
maintainer
Имя текущего сопровождающего, если он отличается от автора. Обратите внимание: если указан сопровождающий, distutils использует его как автора в
PKG-INFOстрока
maintainer_email
Адрес электронной почты текущего сопровождающего, если он отличается от автора
строка
url
URL пакета (домашняя страница)
строка
download_url
URL для загрузки пакета
строка
packages
Список пакетов Python, которыми будет управлять distutils
список строк
py_modules
Список модулей Python, которыми будет управлять distutils
список строк
сценарии
Список отдельных файлов скриптов, которые нужно собрать и установить
список строк
ext_modules
Список расширений Python, которые необходимо собрать
список экземпляров
distutils.core.Extensionclassifiers
Список категорий для пакета
список строк; допустимые классификаторы перечислены на PyPI.
distclass
класс
Distributionдля использованияподкласс
distutils.core.Distributionscript_name
Имя скрипта setup.py – по умолчанию
sys.argv[0]строка
script_args
Аргументы, передаваемые скрипту setup
список строк
options
параметры по умолчанию для скрипта setup
словарь
license
Лицензия пакета
строка
keywords
Описательные метаданные, см. PEP 314
список строк или строка, разделённая запятыми
platforms
список строк или строка, разделённая запятыми
cmdclass
Сопоставление имён команд с подклассами
Commandсловарь
data_files
Список файлов данных для установки
список
package_dir
Сопоставление пакетов и имён каталогов
словарь
-
distutils.core.run_setup(script_name[, script_args=None, stop_after='run'])¶ Выполняет сценарий установки в частично контролируемой среде и возвращает экземпляр
distutils.dist.Distribution, который управляет процессом. Это полезно, если нужно получить метаданные дистрибутива (передаваемые в качестве именованных аргументов из script вsetup()) или содержимое файлов конфигурации или командной строки.script_name – это файл, который будет прочитан и выполнен с помощью
exec().sys.argv[0]будет заменён на script на время вызова. script_args – это список строк; если он указан,sys.argv[1:]будет заменён на script_args на время вызова.stop_after указывает
setup(), когда остановить обработку; возможные значения:значение
описание
init
Остановиться после того, как экземпляр
Distributionбудет создан и заполнен именованными аргументами дляsetup()config
Остановиться после того, как файлы конфигурации будут проанализированы (а их данные сохранены в экземпляре
Distribution)commandline
Остановиться после того, как командная строка (
sys.argv[1:]или script_args) будет разобрана (а данные сохранены в экземпляреDistribution).run
Остановиться после выполнения всех команд (то же самое, как если бы
setup()была вызвана обычным способом). Это значение по умолчанию.
Кроме того, модуль distutils.core предоставляет ряд классов, которые
находятся в других местах.
Extensionизdistutils.extensionDistributionизdistutils.dist
Краткое описание каждого из них приведено ниже, но полную справку смотрите в соответствующем модуле.
-
class
distutils.core.Extension¶ Класс Extension описывает отдельный модуль расширения на C или C++ в сценарии установки. Его конструктор принимает следующие именованные аргументы:
имя аргумента
значение
тип
имя
полное имя расширения, включая любые пакеты – то есть не имя файла или путь, а точечное имя Python
строка
sources
список имён исходных файлов, относительно корня дистрибутива (где находится сценарий установки), в формате Unix (с разделителем-слешем) для переносимости. Исходные файлы могут быть C, C++, SWIG (.i), платформенно-зависимыми файлами ресурсов или любыми другими, которые распознаются командой build_ext в качестве исходных файлов для расширения Python.
список строк
include_dirs
список каталогов для поиска файлов заголовков C/C++ (в формате Unix для переносимости)
список строк
define_macros
список определяемых макросов; каждый макрос определяется с помощью кортежа из двух элементов
(name, value), где value – это либо строка для определения, либоNoneдля определения без конкретного значения (эквивалент#define FOOв исходном коде или-DFOOв командной строке компилятора C Unix)список кортежей
undef_macros
список макросов, которые нужно явно отменить
список строк
library_dirs
список каталогов для поиска библиотек C/C++ во время компоновки
список строк
libraries
список имён библиотек (не имён файлов или путей) для компоновки
список строк
runtime_library_dirs
список каталогов для поиска библиотек C/C++ во время выполнения (для разделяемых расширений это момент загрузки расширения)
список строк
extra_objects
список дополнительных файлов для компоновки (например, объектные файлы, не входящие в «sources», статическая библиотека, которую нужно явно указать, бинарные ресурсные файлы и т.д.)
список строк
extra_compile_args
любая дополнительная информация, зависящая от платформы и компилятора, используемая при компиляции исходных файлов из «sources». Для платформ и компиляторов, где командная строка имеет смысл, это обычно список аргументов командной строки, но для других платформ это может быть что угодно.
список строк
extra_link_args
любая дополнительная информация, зависящая от платформы и компилятора, используемая при компоновке объектных файлов для создания расширения (или для создания нового статического интерпретатора Python). Интерпретация аналогична «extra_compile_args».
список строк
export_symbols
список символов, экспортируемых из разделяемого расширения. Используется не на всех платформах и обычно не требуется для расширений Python, которые обычно экспортируют ровно один символ:
init+ extension_name.список строк
depends
список файлов, от которых зависит расширение
список строк
язык
язык расширения (т.е.
'c','c++','objc'). Если не указан, будет определён по расширениям исходных файлов.строка
опционально
указывает, что при сбое сборки расширения не нужно прерывать процесс сборки, а просто пропустить это расширение.
булево значение
-
class
distutils.core.Distribution¶ Distributionописывает, как собрать, установить и упаковать программный пакет Python.Список именованных аргументов, принимаемых конструктором Distribution, приведён в описании функции
setup().setup()создаёт экземпляр Distribution.Изменено в версии 3.7:
Distributionтеперь выдаёт предупреждение, если поляclassifiers,keywordsиplatformsне указаны в виде списка или строки.
9.2. distutils.ccompiler – базовый класс CCompiler¶distutils.ccompiler – CCompiler base class
Этот модуль предоставляет абстрактный базовый класс для классов CCompiler. Экземпляр CCompiler можно использовать для всех этапов компиляции и компоновки, необходимых для сборки одного проекта. Предусмотрены методы для задания параметров компилятора – макроопределений, путей включения, путей компоновки, библиотек и т.п.
Этот модуль предоставляет следующие функции.
-
distutils.ccompiler.gen_lib_options(compiler, library_dirs, runtime_library_dirs, libraries)¶ Генерирует параметры компоновщика для поиска каталогов библиотек и компоновки с конкретными библиотеками. libraries и library_dirs – это соответственно списки имён библиотек (не имён файлов!) и каталогов поиска. Возвращает список параметров командной строки, подходящих для использования с некоторым компилятором (в зависимости от двух переданных строк формата).
-
distutils.ccompiler.gen_preprocess_options(macros, include_dirs)¶ Генерирует параметры препроцессора C (
-D,-U,-I), используемые как минимум двумя типами компиляторов: типичным Unix-компилятором и Visual C++. macros – обычный список кортежей из одного или двух элементов, где(name,)означает отменить определение (-U) макроса имя, а(name, value)означает определить (-D) макрос имя со значением значение. include_dirs – просто список имён каталогов, добавляемых в путь поиска заголовочных файлов (-I). Возвращает список параметров командной строки, подходящих для Unix-компиляторов или Visual C++.
-
distutils.ccompiler.get_default_compiler(osname, platform)¶ Определяет компилятор по умолчанию для указанной платформы.
osname должно быть одним из стандартных имён ОС Python (т.е. тех, что возвращаются функцией
os.name), а platform – обычным значением, возвращаемымsys.platformдля данной платформы.Если параметры не указаны, используются значения по умолчанию:
os.nameиsys.platform.
-
distutils.ccompiler.new_compiler(plat=None, compiler=None, verbose=0, dry_run=0, force=0)¶ Фабричная функция для создания экземпляра подкласса CCompiler для заданной комбинации платформа/компилятор. plat по умолчанию равен
os.name(например,'posix','nt'), а compiler по умолчанию равен компилятору по умолчанию для этой платформы. В настоящее время поддерживаются только'posix'и'nt', и компиляторами по умолчанию являются «традиционный интерфейс Unix» (классUnixCCompiler) и Visual C++ (классMSVCCompiler). Обратите внимание, что вполне можно запросить объект Unix-компилятора в Windows и объект Microsoft-компилятора в Unix – если указать значение для compiler, то plat игнорируется.
-
distutils.ccompiler.show_compilers()¶ Выводит список доступных компиляторов (используется параметрами
--help-compilerкоманд build, build_ext, build_clib).
-
class
distutils.ccompiler.CCompiler([verbose=0, dry_run=0, force=0])¶ Абстрактный базовый класс
CCompilerопределяет интерфейс, который должны реализовывать реальные классы компиляторов. Класс также содержит несколько вспомогательных методов, используемых несколькими классами компиляторов.Основная идея абстрактного класса компилятора заключается в том, что каждый экземпляр может использоваться для всех этапов компиляции/компоновки при сборке одного проекта. Таким образом, атрибуты, общие для всех этих этапов компиляции и компоновки – каталоги включения, определяемые макросы, библиотеки для компоновки и т.д. – являются атрибутами экземпляра компилятора. Чтобы обеспечить возможность изменения обработки отдельных файлов, большинство этих атрибутов можно изменять для каждой компиляции или каждой компоновки отдельно.
Конструктор каждого подкласса создаёт экземпляр объекта Compiler. Флаги: verbose (показывать подробный вывод), dry_run (не выполнять шаги фактически) и force (пересобрать всё, независимо от зависимостей). Все эти флаги по умолчанию равны
0(выключены). Обратите внимание, что, вероятно, не следует создавать экземплярCCompilerили его подклассов напрямую – вместо этого используйте фабричную функциюdistutils.CCompiler.new_compiler().The following methods allow you to manually alter compiler options for the instance of the Compiler class.
-
add_include_dir(dir)¶ Add dir to the list of directories that will be searched for header files. The compiler is instructed to search directories in the order in which they are supplied by successive calls to
add_include_dir().
-
set_include_dirs(dirs)¶ Set the list of directories that will be searched to dirs (a list of strings). Overrides any preceding calls to
add_include_dir(); subsequent calls toadd_include_dir()add to the list passed toset_include_dirs(). This does not affect any list of standard include directories that the compiler may search by default.
-
add_library(libname)¶ Add libname to the list of libraries that will be included in all links driven by this compiler object. Note that libname should *not* be the name of a file containing a library, but the name of the library itself: the actual filename will be inferred by the linker, the compiler, or the compiler class (depending on the platform).
Компоновщику будет указано компоновать библиотеки в том порядке, в котором они были переданы в
add_library()и/илиset_libraries(). Допускается дублирование имен библиотек; компоновщику будет указано компоновать библиотеки столько раз, сколько они упомянуты.
-
set_libraries(libnames)¶ Set the list of libraries to be included in all links driven by this compiler object to libnames (a list of strings). This does not affect any standard system libraries that the linker may include by default.
-
add_library_dir(dir)¶ Add dir to the list of directories that will be searched for libraries specified to
add_library()andset_libraries(). The linker will be instructed to search for libraries in the order they are supplied toadd_library_dir()and/orset_library_dirs().
-
set_library_dirs(dirs)¶ Set the list of library search directories to dirs (a list of strings). This does not affect any standard library search path that the linker may search by default.
-
add_runtime_library_dir(dir)¶ Add dir to the list of directories that will be searched for shared libraries at runtime.
-
set_runtime_library_dirs(dirs)¶ Set the list of directories to search for shared libraries at runtime to dirs (a list of strings). This does not affect any standard search path that the runtime linker may search by default.
-
define_macro(name[, value=None])¶ Define a preprocessor macro for all compilations driven by this compiler object. The optional parameter value should be a string; if it is not supplied, then the macro will be defined without an explicit value and the exact outcome depends on the compiler used.
-
undefine_macro(name)¶ Отменяет определение макроса препроцессора для всех компиляций, выполняемых данным объектом компилятора. Если один и тот же макрос определен с помощью
define_macro()и отменен с помощьюundefine_macro(), приоритет имеет последний вызов (включая множественные переопределения или отмены). Если макрос переопределяется/отменяется для отдельной компиляции (т.е. в вызовеcompile()), то этот вызов имеет приоритет.
-
add_link_object(object)¶ Add object to the list of object files (or analogues, such as explicitly named library files or the output of “resource compilers”) to be included in every link driven by this compiler object.
-
set_link_objects(objects)¶ Set the list of object files (or analogues) to be included in every link to objects. This does not affect any standard object files that the linker may include by default (such as system libraries).
Следующие методы реализуют автодетекцию параметров компилятора, предоставляя функциональность, аналогичную GNU autoconf.
-
detect_language(sources)¶ Определяет язык заданного файла или списка файлов. Использует атрибуты экземпляра
language_map(словарь) иlanguage_order(список).
-
find_library_file(dirs, lib[, debug=0])¶ Search the specified list of directories for a static or shared library file lib and return the full path to that file. If debug is true, look for a debugging version (if that makes sense on the current platform). Return
Noneif lib wasn’t found in any of the specified directories.
-
has_function(funcname[, includes=None, include_dirs=None, libraries=None, library_dirs=None])¶ Возвращает логическое значение, указывающее, поддерживается ли funcname на текущей платформе. Необязательные аргументы можно использовать для расширения среды компиляции, предоставляя дополнительные включаемые файлы и пути, а также библиотеки и пути.
-
library_dir_option(dir)¶ Возвращает опцию компилятора для добавления dir в список каталогов, в которых выполняется поиск библиотек.
-
library_option(lib)¶ Возвращает опцию компилятора для добавления lib в список библиотек, связываемых в разделяемую библиотеку или исполняемый файл.
-
runtime_library_dir_option(dir)¶ Возвращает опцию компилятора для добавления dir в список каталогов, в которых выполняется поиск библиотек времени выполнения.
-
set_executables(**args)¶ Определяет исполняемые файлы (и параметры для них), которые будут запущены для выполнения различных этапов компиляции. Точный набор исполняемых файлов, которые могут быть здесь указаны, зависит от класса компилятора (через атрибут класса ‘executables’), но большинство будут иметь:
атрибут
описание
compiler
компилятор C/C++
linker_so
компоновщик, используемый для создания разделяемых объектов и библиотек
linker_exe
компоновщик, используемый для создания двоичных исполняемых файлов
archiver
создатель статических библиотек
На платформах с командной строкой (Unix, DOS/Windows) каждый из них представляет собой строку, которая будет разделена на имя исполняемого файла и (необязательный) список аргументов. (Разделение строки выполняется аналогично тому, как работают оболочки Unix: слова разделяются пробелами, но кавычки и обратная косая черта могут переопределить это. См.
distutils.util.split_quoted().)
Следующие методы вызывают этапы процесса сборки.
-
compile(sources[, output_dir=None, macros=None, include_dirs=None, debug=0, extra_preargs=None, extra_postargs=None, depends=None])¶ Компилирует один или несколько исходных файлов. Создает объектные файлы (например, преобразует файл
.cв файл.o).sources должен быть списком имен файлов, скорее всего файлов C/C++, но на самом деле всего, что может обрабатываться конкретным компилятором и классом компилятора (например,
MSVCCompilerможет обрабатывать файлы ресурсов в sources). Возвращает список имен объектных файлов, по одному на каждое имя исходного файла в sources. В зависимости от реализации не все исходные файлы обязательно будут скомпилированы, но все соответствующие имена объектных файлов будут возвращены.Если указан output_dir, объектные файлы будут помещены в него, сохраняя свой исходный компонент пути. То есть
foo/bar.cобычно компилируется вfoo/bar.o(для реализации Unix); если output_dir равен build, то он будет скомпилирован вbuild/foo/bar.o.macros, если указан, должен быть списком определений макросов. Определение макроса – это либо кортеж из 2 элементов
(name, value), либо кортеж из 1 элемента(name,). Первый вариант определяет макрос; если значение равноNone, макрос определяется без явного значения. Случай с кортежем из 1 элемента отменяет определение макроса. Последующие определения/переопределения/отмены имеют приоритет.include_dirs, если указан, должен быть списком строк – каталогов, добавляемых к пути поиска включаемых файлов по умолчанию только для данной компиляции.
debug – логическое значение; если истинно, компилятору будет дано указание выводить отладочные символы в объектный файл (или рядом с ним).
extra_preargs и extra_postargs зависят от реализации. На платформах, имеющих понятие командной строки (например, Unix, DOS/Windows), они, скорее всего, представляют собой списки строк: дополнительные аргументы командной строки, добавляемые в начало/конец командной строки компилятора. На других платформах обращайтесь к документации класса реализации. В любом случае они предназначены как запасной выход для тех случаев, когда абстрактная структура компилятора не справляется.
depends, если указан, представляет собой список имен файлов, от которых зависят все цели. Если исходный файл старше любого файла из depends, то исходный файл будет перекомпилирован. Это обеспечивает отслеживание зависимостей, но только с грубой зернистостью.
Возбуждает
CompileErrorпри ошибке.
-
create_static_lib(objects, output_libname[, output_dir=None, debug=0, target_lang=None])¶ Связывает вместе набор компонентов для создания файла статической библиотеки. «Набор компонентов» состоит из списка объектных файлов, переданных как objects, дополнительных объектных файлов, переданных в
add_link_object()и/илиset_link_objects(), библиотек, переданных вadd_library()и/илиset_libraries(), и библиотек, переданных как libraries (если есть).output_libname должно быть именем библиотеки, а не именем файла; имя файла будет выведено из имени библиотеки. output_dir – это каталог, в который будет помещен файл библиотеки.
debug – логическое значение; если истинно, в библиотеку будет включена отладочная информация (обратите внимание: на большинстве платформ значение имеет этап компиляции; флаг debug добавлен здесь лишь для единообразия).
target_lang – целевой язык, для которого компилируются указанные объекты. Это позволяет выполнять специальную обработку на этапе компоновки для некоторых языков.
Возбуждает
LibErrorпри ошибке.
-
link(target_desc, objects, output_filename[, output_dir=None, libraries=None, library_dirs=None, runtime_library_dirs=None, export_symbols=None, debug=0, extra_preargs=None, extra_postargs=None, build_temp=None, target_lang=None])¶ Связывает всё вместе, чтобы создать исполняемый файл или файл динамической библиотеки.
«Всё вместе» включает список объектных файлов, переданных в objects. output_filename должно быть именем файла. Если output_dir задан, output_filename указывается относительно него (т.е. output_filename может содержать компоненты пути).
libraries – список библиотек для компоновки. Это имена библиотек, а не имена файлов, поскольку они преобразуются в имена файлов платформенно-зависимым образом (например, foo превращается в
libfoo.aв Unix иfoo.libв DOS/Windows). Однако они могут содержать компонент пути, что означает, что компоновщик будет искать в этом конкретном каталоге, а не во всех стандартных местах.library_dirs, если задан, должен быть списком каталогов для поиска библиотек, указанных только по имени (т.е. без компонента пути). Эти каталоги добавляются поверх системных по умолчанию и тех, что переданы в
add_library_dir()и/илиset_library_dirs(). runtime_library_dirs – список каталогов, которые будут встроены в динамическую библиотеку и использоваться для поиска других динамических библиотек, от которых она зависит во время выполнения. (Это может быть актуально только в Unix.)export_symbols – список символов, которые будет экспортировать динамическая библиотека. (Это актуально, по-видимому, только в Windows.)
debug аналогичен
compile()иcreate_static_lib(), с тем небольшим отличием, что он действительно имеет значение на большинстве платформ (в отличие отcreate_static_lib(), который содержит флаг debug в основном для формальности).extra_preargs и extra_postargs аналогичны
compile()(за исключением, конечно, того, что они предоставляют аргументы командной строки для используемого компоновщика).target_lang – целевой язык, для которого компилируются указанные объекты. Это позволяет выполнять специальную обработку на этапе компоновки для некоторых языков.
Возбуждает
LinkErrorпри ошибке.
-
link_executable(objects, output_progname[, output_dir=None, libraries=None, library_dirs=None, runtime_library_dirs=None, debug=0, extra_preargs=None, extra_postargs=None, target_lang=None])¶ Компоновка исполняемого файла. output_progname – имя исполняемого файла, а objects – список имен объектных файлов для включения. Остальные аргументы такие же, как у метода
link().
Компоновка динамической библиотеки. output_libname – имя выходной библиотеки, а objects – список имен объектных файлов для включения. Остальные аргументы такие же, как у метода
link().
Компоновка разделяемого объекта. output_filename – имя создаваемого разделяемого объекта, а objects – список имен объектных файлов для включения. Остальные аргументы такие же, как у метода
link().
-
preprocess(source[, output_file=None, macros=None, include_dirs=None, extra_preargs=None, extra_postargs=None])¶ Препроцессирование одного исходного файла C/C++, указанного в source. Результат будет записан в файл с именем output_file или в stdout, если output_file не задан. macros – список определений макросов, как в
compile(), который дополнит макросы, установленные с помощьюdefine_macro()иundefine_macro(). include_dirs – список имен каталогов, которые будут добавлены к списку по умолчанию, аналогичноadd_include_dir().Возбуждает
PreprocessErrorпри ошибке.
Следующие вспомогательные методы определены классом
CCompilerдля использования различными конкретными подклассами.-
executable_filename(basename[, strip_dir=0, output_dir=''])¶ Возвращает имя файла исполняемого файла для заданного basename. Обычно на платформах, отличных от Windows, оно совпадает с базовым именем, в то время как в Windows будет добавлено
.exe.
-
library_filename(libname[, lib_type='static', strip_dir=0, output_dir=''])¶ Возвращает имя файла для заданного имени библиотеки на текущей платформе. В Unix библиотека с lib_type равным
'static'обычно имеет видliblibname.a, а с lib_type равным'dynamic'– видliblibname.so.
-
object_filenames(source_filenames[, strip_dir=0, output_dir=''])¶ Возвращает имена объектных файлов для заданных исходных файлов. source_filenames должен быть списком имен файлов.
Возвращает имя файла разделяемого объекта для заданного имени файла basename.
-
execute(func, args[, msg=None, level=1])¶ Вызывает
distutils.util.execute(). Этот метод вызывает функцию Python func с заданными аргументами args, предварительно выполнив логирование и учтя флаг dry_run.
-
spawn(cmd)¶ Вызывает
distutils.util.spawn(). Запускает внешний процесс для выполнения указанной команды.
-
mkpath(name[, mode=511])¶ Вызывает
distutils.dir_util.mkpath(). Создаёт каталог и все недостающие родительские каталоги.
-
move_file(src, dst)¶ Вызывает
distutils.file_util.move_file(). Переименовывает src в dst.
-
announce(msg[, level=1])¶ Записывает сообщение, используя
distutils.log.debug().
-
warn(msg)¶ Записывает предупреждающее сообщение msg в стандартный поток ошибок.
-
9.3. distutils.unixccompiler – компилятор C для Unix¶distutils.unixccompiler – Unix C Compiler
Этот модуль предоставляет класс UnixCCompiler, подкласс
CCompiler, который работает с типичным компилятором C для Unix в стиле командной строки:
макросы, определённые с помощью
-Dname[=value]макросы, отменённые с помощью
-Unameкаталоги поиска include, указанные с помощью
-Idirбиблиотеки, указанные с помощью
-llibкаталоги поиска библиотек, указанные с помощью
-Ldirкомпиляция выполняется исполняемым файлом cc (или аналогичным) с опцией
-c: компилирует.cв.oкомпоновка статической библиотеки выполняется командой ar (возможно, с ranlib)
компоновка разделяемой библиотеки выполняется cc
-shared
9.4. distutils.msvccompiler – компилятор Microsoft¶distutils.msvccompiler – Microsoft Compiler
Этот модуль предоставляет MSVCCompiler – реализацию абстрактного класса
CCompiler для Microsoft Visual Studio. Как правило, модули расширения
должны компилироваться тем же компилятором, который использовался для сборки
Python. Для Python 2.3 и более ранних версий это был Visual Studio 6. Для Python
2.4 и 2.5 – Visual Studio .NET 2003.
MSVCCompiler обычно самостоятельно выбирает подходящий компилятор, компоновщик и т. д.
Чтобы переопределить этот выбор, должны быть установлены обе переменные окружения DISTUTILS_USE_SDK
и MSSdk. MSSdk указывает, что текущее окружение было
настроено сценарием SetEnv.Cmd SDK или что переменные окружения
были зарегистрированы при установке SDK; DISTUTILS_USE_SDK указывает,
что пользователь distutils явно решил переопределить выбор компилятора
с помощью MSVCCompiler.
9.5. distutils.bcppcompiler – компилятор Borland¶distutils.bcppcompiler – Borland Compiler
Этот модуль предоставляет BorlandCCompiler, подкласс абстрактного класса
CCompiler для компилятора Borland C++.
9.6. distutils.cygwincompiler – компилятор Cygwin¶distutils.cygwincompiler – Cygwin Compiler
Этот модуль предоставляет класс CygwinCCompiler, подкласс
UnixCCompiler, который работает с портом Cygwin компилятора GNU C для
Windows. Он также содержит класс Mingw32CCompiler, который работает с портом mingw32
GCC (то же, что cygwin в режиме без cygwin).
9.7. distutils.archive_util – утилиты архивации¶distutils.archive_util – Archiving utilities
Этот модуль предоставляет несколько функций для создания архивных файлов, таких как tar-архивы или zip-файлы.
-
distutils.archive_util.make_archive(base_name, format[, root_dir=None, base_dir=None, verbose=0, dry_run=0])¶ Создаёт архивный файл (например,
zipилиtar). base_name – имя создаваемого файла без расширения, зависящего от формата; format – формат архива: один изzip,tar,gztar,bztar,xztarилиztar. root_dir – каталог, который станет корневым каталогом архива; то есть перед созданием архива мы обычноchdirв root_dir. base_dir – каталог, с которого начинается архивирование; иначе говоря, base_dir будет общим префиксом для всех файлов и каталогов в архиве. root_dir и base_dir по умолчанию равны текущему каталогу. Возвращает имя архивного файла.Изменено в версии 3.5: Добавлена поддержка формата
xztar.
-
distutils.archive_util.make_tarball(base_name, base_dir[, compress='gzip', verbose=0, dry_run=0])¶ Создаёт (необязательно сжатый) архив в формате tar из всех файлов в base_dir и его подкаталогах. compress должно быть
'gzip'(по умолчанию),'bzip2','xz','compress'илиNone. Для метода'compress'утилита сжатия, указанная в compress, должна находиться в пути поиска программ по умолчанию, поэтому это, вероятно, специфично для Unix. Выходному tar-файлу будет присвоено имяbase_dir.tar, возможно с соответствующим расширением сжатия (.gz,.bz2,.xzили.Z). Возвращает имя выходного файла.Изменено в версии 3.5: Добавлена поддержка сжатия
xz.
-
distutils.archive_util.make_zipfile(base_name, base_dir[, verbose=0, dry_run=0])¶ Создаёт zip-файл из всех файлов в base_dir и его подкаталогах. Выходной zip-файл будет назван base_name +
.zip. Использует либо модуль Pythonzipfile(если доступен), либо утилиту InfoZIPzip(если установлена и найдена в пути поиска по умолчанию). Если ни один из инструментов недоступен, возбуждаетDistutilsExecError. Возвращает имя выходного zip-файла.
9.8. distutils.dep_util – Проверка зависимостей¶distutils.dep_util – Dependency checking
Этот модуль предоставляет функции для простой проверки зависимостей файлов и групп файлов на основе временных меток; а также функции, полностью основанные на таком анализе зависимостей по временным меткам.
-
distutils.dep_util.newer(source, target)¶ Возвращает истину, если source существует и изменён позже, чем target, или если source существует, а target – нет. Возвращает ложь, если оба существуют и target одного возраста или новее, чем source. Возбуждает
DistutilsFileError, если source не существует.
-
distutils.dep_util.newer_pairwise(sources, targets)¶ Обходит два списка имён файлов параллельно, проверяя, является ли каждый исходный файл новее соответствующего целевого. Возвращает пару списков (sources, targets), где исходный файл новее целевого, в соответствии с семантикой
newer().
-
distutils.dep_util.newer_group(sources, target[, missing='error'])¶ Возвращает истину, если target устарел относительно любого файла из списка sources. Другими словами, если target существует и новее любого файла в sources, возвращает ложь; в противном случае возвращает истину. missing определяет поведение при отсутствии исходного файла; по умолчанию (
'error') – аварийное завершение сOSErrorвнутриos.stat(); если указано'ignore', отсутствующие исходные файлы молча пропускаются; если указано'newer', любой отсутствующий исходный файл заставляет считать, что target устарел (это удобно в режиме «холостого прогона»: он заставляет считать, что команды выполняются, хотя они не сработали бы из-за отсутствия входных данных, но это не имеет значения, поскольку команды на самом деле не выполняются).
9.9. distutils.dir_util – Операции с деревьями каталогов¶distutils.dir_util – Directory tree operations
Этот модуль предоставляет функции для работы с каталогами и деревьями каталогов.
-
distutils.dir_util.mkpath(name[, mode=0o777, verbose=0, dry_run=0])¶ Создаёт каталог и все недостающие родительские каталоги. Если каталог уже существует (или если name – пустая строка, что означает текущий каталог, который, разумеется, существует), то ничего не делает. Возбуждает
DistutilsFileError, если не удаётся создать какой-либо каталог по пути (например, часть пути существует, но является файлом, а не каталогом). Если verbose истинно, выводит в stdout одну строку с итогом каждого mkdir. Возвращает список фактически созданных каталогов.
-
distutils.dir_util.create_tree(base_dir, files[, mode=0o777, verbose=0, dry_run=0])¶ Создаёт все пустые каталоги внутри base_dir, необходимые для размещения files. base_dir – это просто имя каталога, который необязательно существует; files – список имён файлов, интерпретируемых относительно base_dir. base_dir + часть пути (каталог) каждого файла из files будут созданы, если их ещё нет. Флаги mode, verbose и dry_run аналогичны
mkpath().
-
distutils.dir_util.copy_tree(src, dst[, preserve_mode=1, preserve_times=1, preserve_symlinks=0, update=0, verbose=0, dry_run=0])¶ Копирует всё дерево каталогов src в новое расположение dst. Оба src и dst должны быть именами каталогов. Если src не является каталогом, возбуждает
DistutilsFileError. Если dst не существует, он создаётся с помощьюmkpath(). Конечный результат копирования: каждый файл в src копируется в dst, а каталоги внутри src рекурсивно копируются в dst. Возвращает список файлов, которые были скопированы или могли быть скопированы, используя их выходные имена. Возвращаемое значение не зависит от update или dry_run: это просто список всех файлов в src, с именами, изменёнными на соответствующие dst.preserve_mode и preserve_times аналогичны одноимённым параметрам в
distutils.file_util.copy_file(); обратите внимание, что они применяются только к обычным файлам, а не к каталогам. Если preserve_symlinks истинно, символические ссылки копируются как символические ссылки (на платформах, которые их поддерживают!); в противном случае (по умолчанию) копируется объект, на который указывает ссылка. update и verbose аналогичныcopy_file().Файлы в src, начинающиеся с
.nfs, пропускаются (дополнительная информация об этих файлах доступна в ответе D2 на странице NFS FAQ).Изменено в версии 3.3.1: Файлы NFS игнорируются.
-
distutils.dir_util.remove_tree(directory[, verbose=0, dry_run=0])¶ Рекурсивно удаляет directory и все файлы и каталоги внутри него. Все ошибки игнорируются (за исключением сообщения в
sys.stdout, если verbose истинно).
9.10. distutils.file_util – Операции с отдельными файлами¶distutils.file_util – Single file operations
Этот модуль содержит несколько служебных функций для работы с отдельными файлами.
-
distutils.file_util.copy_file(src, dst[, preserve_mode=1, preserve_times=1, update=0, link=None, verbose=0, dry_run=0])¶ Копирует файл src в dst. Если dst является каталогом, то src копируется туда с тем же именем; в противном случае это должно быть имя файла. (Если файл существует, он будет безжалостно перезаписан.) Если preserve_mode равен true (по умолчанию), то копируется режим файла (тип и биты разрешений, или что-то аналогичное на текущей платформе). Если preserve_times равен true (по умолчанию), то также копируются время последнего изменения и последнего доступа. Если update равен true, то src будет скопирован только если dst не существует, или если dst существует, но старше, чем src.
link позволяет создавать жёсткие ссылки (с помощью
os.link()) или символические ссылки (с помощьюos.symlink()) вместо копирования: установите его в'hard'или'sym'; если он равенNone(по умолчанию), файлы копируются. Не устанавливайте link в системах, которые его не поддерживают:copy_file()не проверяет, доступно ли создание жёстких или символических ссылок. Он использует_copy_file_contents()для копирования содержимого файла.Возвращает кортеж
(dest_name, copied): dest_name – это фактическое имя выходного файла, а copied равен true, если файл был скопирован (или был бы скопирован, если бы dry_run был true).
-
distutils.file_util.move_file(src, dst[, verbose, dry_run])¶ Перемещает файл src в dst. Если dst является каталогом, файл будет перемещён в него с тем же именем; в противном случае src просто переименовывается в dst. Возвращает новое полное имя файла.
Предупреждение
Обрабатывает перемещение между устройствами в Unix с помощью
copy_file(). А как насчёт других систем?
-
distutils.file_util.write_file(filename, contents)¶ Создаёт файл с именем filename и записывает в него contents (последовательность строк без символов конца строки).
9.11. distutils.util – Прочие вспомогательные функции¶distutils.util – Miscellaneous other utility functions
Этот модуль содержит другие разрозненные элементы, которые не вписываются ни в один другой вспомогательный модуль.
-
distutils.util.get_platform()¶ Возвращает строку, идентифицирующую текущую платформу. Это используется главным образом для различения платформенно-зависимых каталогов сборки и платформенно-зависимых собранных дистрибутивов. Обычно включает имя и версию ОС, а также архитектуру (как предоставлено функцией 'os.uname()'), хотя точный набор информации зависит от ОС; например, в Linux версия ядра не особенно важна.
Примеры возвращаемых значений:
linux-i586linux-alphasolaris-2.6-sun4u
Для платформ, несовместимых с POSIX, в настоящее время просто возвращает
sys.platform.Для систем Mac OS X версия ОС отражает минимальную версию, на которой будут работать двоичные файлы (то есть значение
MACOSX_DEPLOYMENT_TARGETво время сборки Python), а не версию ОС текущей системы.Для универсальных сборок двоичных файлов на Mac OS X значение архитектуры отражает статус универсальной сборки, а не архитектуру текущего процессора. Для 32-битных универсальных сборок архитектура –
fat, для 64-битных универсальных сборок –fat64, а для 4-сторонних универсальных сборок –universal. Начиная с Python 2.7 и Python 3.2 архитектураfat3используется для 3-сторонней универсальной сборки (ppc, i386, x86_64), аintel– для универсальной сборки с архитектурами i386 и x86_64.Примеры возвращаемых значений на Mac OS X:
macosx-10.3-ppcmacosx-10.3-fatmacosx-10.5-universalmacosx-10.6-intel
-
distutils.util.convert_path(pathname)¶ Возвращает 'pathname' как имя, которое будет работать в родной файловой системе, т.е. разделяет его по '/' и снова соединяет, используя текущий разделитель каталогов. Это необходимо, потому что имена файлов в скрипте установки всегда предоставляются в стиле Unix и должны быть преобразованы в локальное соглашение, прежде чем их можно будет использовать в файловой системе. Вызывает
ValueErrorв системах, несовместимых с Unix, если pathname начинается или заканчивается косой чертой.
-
distutils.util.change_root(new_root, pathname)¶ Возвращает pathname с добавленным в начало new_root. Если pathname является относительным, это эквивалентно
os.path.join(new_root,pathname). В противном случае требуется сделать pathname относительным, а затем объединить их, что сложно на DOS/Windows.
-
distutils.util.check_environ()¶ Гарантирует, что 'os.environ' содержит все переменные окружения, которые пользователи могут использовать в конфигурационных файлах, параметрах командной строки и т.д. В настоящее время это включает:
HOME– домашний каталог пользователя (только Unix)PLAT– описание текущей платформы, включая аппаратное обеспечение и ОС (см.get_platform())
-
distutils.util.subst_vars(s, local_vars)¶ Выполняет подстановку переменных в стиле shell/Perl для s. Каждое вхождение
$, за которым следует имя, считается переменной, и переменная заменяется значением, найденным в словаре local_vars или вos.environ, если её нет в local_vars. os.environ сначала проверяется/дополняется, чтобы гарантировать, что он содержит определённые значения: см.check_environ(). ВызываетValueErrorдля любых переменных, не найденных ни в local_vars, ни вos.environ.Обратите внимание, что это не полноценная функция интерполяции строк. Допустимое
$variableможет состоять только из букв верхнего и нижнего регистра, цифр и символа подчеркивания. Кавычки в стиле { } или ( ) не поддерживаются.
-
distutils.util.split_quoted(s)¶ Разделяет строку по правилам, похожим на оболочку Unix, для кавычек и обратной косой черты. Кратко: слова разделяются пробелами, если эти пробелы не экранированы обратной косой чертой или не находятся внутри строки в кавычках. Одинарные и двойные кавычки эквивалентны, и символы кавычек могут быть экранированы обратной косой чертой. Обратная косая черта удаляется из любой двухсимвольной escape-последовательности, оставляя только экранированный символ. Символы кавычек удаляются из любой строки в кавычках. Возвращает список слов.
-
distutils.util.execute(func, args[, msg=None, verbose=0, dry_run=0])¶ Выполняет некоторое действие, влияющее на внешний мир (например, запись в файловую систему). Такие действия особенны тем, что они отключаются флагом dry_run. Этот метод берет на себя всю эту бюрократию; все, что нужно сделать – предоставить вызываемую функцию и кортеж аргументов для нее (чтобы воплотить выполняемое «внешнее действие») и необязательное сообщение для вывода.
-
distutils.util.strtobool(val)¶ Преобразует строковое представление истинности в true (1) или false (0).
Истинными значениями являются
y,yes,t,true,onи1; ложными значениями являютсяn,no,f,false,offи0. ВозбуждаетValueError, если val – что-то другое.
-
distutils.util.byte_compile(py_files[, optimize=0, force=0, prefix=None, base_dir=None, verbose=1, dry_run=0, direct=None])¶ Байт-компилирует набор файлов исходного кода Python в файлы
.pycв подкаталоге__pycache__(см. PEP 3147 и PEP 488). py_files – это список файлов для компиляции; все файлы, не заканчивающиеся на.py, молча пропускаются. optimize должен быть одним из следующих значений:0– без оптимизации1– обычная оптимизация (какpython -O)2– дополнительная оптимизация (какpython -OO)
Если force равно true, все файлы перекомпилируются независимо от временных меток.
Имя исходного файла, закодированное в каждом bytecode файле, по умолчанию соответствует именам файлов, перечисленным в py_files; их можно изменить с помощью prefix и basedir. prefix – это строка, которая будет отрезана от каждого имени исходного файла, а base_dir – это имя каталога, которое будет добавлено спереди (после того, как prefix будет отрезан). Можно указать либо prefix, либо base_dir, или оба, или ни одного, по желанию.
Если dry_run равно true, на самом деле не выполняет никаких действий, влияющих на файловую систему.
Байт-компиляция выполняется либо непосредственно в текущем процессе интерпретатора с использованием стандартного модуля
py_compile, либо косвенно – путем записи временного скрипта и его выполнения. Обычно следует позволитьbyte_compile()решать, использовать ли прямую компиляцию (подробности см. в исходном коде). Флаг direct используется скриптом, созданным в косвенном режиме; если нет уверенности в том, что делается, оставьте его равнымNone.Изменено в версии 3.2.3: Создавать файлы
.pycсimport magic tagв их имени, в подкаталоге__pycache__вместо файлов без тега в текущем каталоге.Изменено в версии 3.5: Создавать файлы
.pycв соответствии с PEP 488.
9.12. distutils.dist – Класс Distribution¶distutils.dist – The Distribution class
Этот модуль предоставляет класс Distribution, который представляет распространяемый модуль (сборка/установка/распространение).
9.13. distutils.extension – Класс Extension¶distutils.extension – The Extension class
Этот модуль предоставляет класс Extension, используемый для описания модулей расширения C/C++ в скриптах установки.
9.14. distutils.debug – Режим отладки Distutils¶distutils.debug – Distutils debug mode
Этот модуль предоставляет флаг DEBUG.
9.15. distutils.errors – Исключения Distutils¶distutils.errors – Distutils exceptions
Предоставляет исключения, используемые модулями Distutils. Обратите внимание, что модули Distutils могут вызывать стандартные исключения; в частности, SystemExit обычно возбуждается для ошибок, которые явно являются виной конечного пользователя (например, неправильные аргументы командной строки).
Этот модуль безопасно использовать в режиме from ... import *; он экспортирует только символы, имена которых начинаются с Distutils и заканчиваются на Error.
9.16. distutils.fancy_getopt – Обёртка вокруг стандартного модуля getopt¶distutils.fancy_getopt – Wrapper around the standard getopt module
Этот модуль предоставляет обёртку вокруг стандартного модуля getopt, которая предоставляет следующие дополнительные возможности:
короткие и длинные опции привязаны друг к другу
опции имеют строки справки, поэтому
fancy_getopt()потенциально может создать полную сводку использованияопции устанавливают атрибуты переданного объекта
булевы опции могут иметь «отрицательные псевдонимы» – например, если
--quiet– это «отрицательный псевдоним» для--verbose, то--quietв командной строке устанавливает verbose в false.
-
distutils.fancy_getopt.fancy_getopt(options, negative_opt, object, args)¶ Функция-обёртка. options – это список
(long_option, short_option, help_string)3-кортежей, как описано в конструктореFancyGetopt. negative_opt должен быть словарём, сопоставляющим имена опций именам опций; и ключ, и значение должны быть в списке options. object – это объект, который будет использоваться для хранения значений (см. методgetopt()классаFancyGetopt). args – это список аргументов. Будет использованsys.argv[1:], если передатьNoneв качестве args.
-
distutils.fancy_getopt.wrap_text(text, width)¶ Переносит text до ширины менее width.
-
class
distutils.fancy_getopt.FancyGetopt([option_table=None])¶ option_table – это список 3-кортежей:
(long_option, short_option, help_string)Если опция принимает аргумент, её long_option должен оканчиваться на
'='; short_option должен быть просто одним символом, ни в коем случае без':'. short_option должен бытьNone, если long_option не имеет соответствующего short_option. Все кортежи опций должны включать длинную опцию.
Класс FancyGetopt предоставляет следующие методы:
-
FancyGetopt.getopt([args=None, object=None])¶ Разбирает параметры командной строки в args. Сохраняет как атрибуты object.
Если args –
Noneили не указан, используетсяsys.argv[1:]. Если object –Noneили не указан, создаётся новый экземплярOptionDummy, сохраняются значения опций и возвращается кортеж(args, object). Если object указан, он изменяется на месте, иgetopt()просто возвращает args; в обоих случаях возвращаемый args – это изменённая копия переданного списка args, который остаётся нетронутым.
-
FancyGetopt.get_option_order()¶ Возвращает список кортежей
(option, value), обработанных предыдущим вызовомgetopt(). ВызываетRuntimeError, еслиgetopt()ещё не вызывался.
-
FancyGetopt.generate_help([header=None])¶ Генерирует текст справки (список строк, по одной на каждую предлагаемую строку вывода) из таблицы опций для данного объекта
FancyGetopt.Если указан, выводит переданный header в начале справки.
9.17. distutils.filelist – Класс FileList¶distutils.filelist – The FileList class
Этот модуль предоставляет класс FileList, используемый для обхода файловой
системы и построения списков файлов.
9.18. distutils.log – Простое логирование в стиле PEP 282¶distutils.log – Simple PEP 282-style logging
9.19. distutils.spawn – Запуск подпроцесса¶distutils.spawn – Spawn a sub-process
Этот модуль предоставляет функцию spawn() – интерфейс к различным
платформенно-зависимым функциям для запуска другой программы в подпроцессе.
Также предоставляет find_executable() для поиска заданного исполняемого файла
по путям.
9.20. distutils.sysconfig – Информация о конфигурации системы¶distutils.sysconfig – System configuration information
Модуль distutils.sysconfig предоставляет доступ к низкоуровневой
информации о конфигурации Python. Доступные конкретные переменные конфигурации
сильно зависят от платформы и конфигурации. Конкретные переменные зависят
от процесса сборки для конкретной версии Python; это те переменные,
которые находятся в Makefile и заголовочном файле конфигурации,
устанавливаемом вместе с Python в Unix-системах. Заголовочный файл называется
pyconfig.h для Python версий 2.2 и новее, и config.h
для более ранних версий Python.
Предоставляются также некоторые дополнительные функции, выполняющие полезные
преобразования для других частей пакета distutils.
-
distutils.sysconfig.PREFIX¶ Результат
os.path.normpath(sys.prefix).
-
distutils.sysconfig.EXEC_PREFIX¶ Результат
os.path.normpath(sys.exec_prefix).
-
distutils.sysconfig.get_config_var(name)¶ Возвращает значение одной переменной. Эквивалентно
get_config_vars().get(name).
-
distutils.sysconfig.get_config_vars(...)¶ Возвращает набор определений переменных. Если аргументы не переданы, возвращается словарь, сопоставляющий имена конфигурационных переменных их значениям. Если аргументы указаны, они должны быть строками, а возвращаемое значение будет последовательностью соответствующих значений. Если для указанного имени нет соответствующего значения,
Noneбудет включено для этой переменной.
-
distutils.sysconfig.get_config_h_filename()¶ Возвращает полное имя файла заголовка конфигурации. Для Unix это будет заголовок, сгенерированный сценарием configure; для других платформ заголовок поставляется непосредственно с дистрибутивом исходных кодов Python. Этот файл является платформозависимым текстовым файлом.
-
distutils.sysconfig.get_makefile_filename()¶ Возвращает полное имя файла
Makefile, использованного для сборки Python. Для Unix это будет файл, сгенерированный сценарием configure; на других платформах значение может различаться. Файл является платформозависимым текстовым файлом (если он существует). Эта функция полезна только на платформах POSIX.
-
distutils.sysconfig.get_python_inc([plat_specific[, prefix]])¶ Возвращает каталог для общих или платформозависимых C-заголовочных файлов. Если plat_specific равен true, возвращается платформозависимый каталог include; если false или не указан, возвращается платформонезависимый каталог. Если указан prefix, он используется как префикс вместо
PREFIX, или как exec-prefix вместоEXEC_PREFIX, если plat_specific равен true.
-
distutils.sysconfig.get_python_lib([plat_specific[, standard_lib[, prefix]]])¶ Возвращает каталог для установки общих или платформозависимых библиотек. Если plat_specific равен true, возвращается платформозависимый каталог include; если false или не указан, возвращается платформонезависимый каталог. Если указан prefix, он используется как префикс вместо
PREFIX, или как exec-prefix вместоEXEC_PREFIX, если plat_specific равен true. Если standard_lib равен true, возвращается каталог для стандартной библиотеки, а не для установки сторонних расширений.
Следующая функция предназначена только для использования в пакете distutils.
-
distutils.sysconfig.customize_compiler(compiler)¶ Выполняет любую платформозависимую настройку экземпляра
distutils.ccompiler.CCompiler.Эта функция сейчас требуется только на Unix, но её следует вызывать последовательно для обеспечения прямой совместимости. Она вставляет информацию, которая различается в разных версиях Unix и хранится в
MakefilePython. Эта информация включает выбранный компилятор, параметры компилятора и компоновщика, а также расширение, используемое компоновщиком для разделяемых объектов.
Эта функция ещё более специализированная и должна использоваться только в процедурах сборки самого Python.
-
distutils.sysconfig.set_python_build()¶ Сообщает модулю
distutils.sysconfig, что он используется как часть процесса сборки Python. Это изменяет множество относительных расположений файлов, позволяя им находиться в каталоге сборки, а не в установленном Python.
9.21. distutils.text_file – класс TextFile¶distutils.text_file – The TextFile class
Этот модуль предоставляет класс TextFile, который предоставляет интерфейс к текстовым файлам, (опционально) обрабатывающий удаление комментариев, игнорирование пустых строк и объединение строк с обратной косой чертой.
-
class
distutils.text_file.TextFile([filename=None, file=None, **options])¶ Этот класс предоставляет объект, подобный файлу, который заботится обо всех вещах, которые обычно нужно делать при обработке текстового файла с построчным синтаксисом: удаление комментариев (если
#является символом комментария), пропуск пустых строк, объединение соседних строк с помощью экранирования перевода строки (т.е. обратная косая черта в конце строки), удаление начальных и/или конечных пробелов. Все эти возможности опциональны и управляются независимо.Класс предоставляет метод
warn()для генерации предупреждений с указанием физического номера строки, даже если логическая строка охватывает несколько физических строк. Также предоставляетunreadline()для реализации построчного просмотра вперед.Экземпляры
TextFileсоздаются с помощью filename, file или обоих.RuntimeErrorвозникает, если оба равныNone. filename должна быть строкой, а file – файловым объектом (или чем-то, предоставляющим методыreadline()иclose()). Рекомендуется указывать хотя бы filename, чтобыTextFileмог включать его в предупреждения. Если file не указан,TextFileсоздаёт собственный файловый объект с помощью встроенной функцииopen().Все параметры логические и влияют на значения, возвращаемые
readline().имя параметра
описание
по умолчанию
strip_comments
удаляет от
'#'до конца строки, а также все пробелы перед'#', если только он не экранирован обратной косой чертойtrue
lstrip_ws
удаляет начальные пробелы из каждой строки перед её возвратом
false
rstrip_ws
Удаляет завершающие пробелы (включая символ конца строки!) из каждой строки перед её возвратом.
true
skip_blanks
Пропускает строки, которые пусты *после* удаления комментариев и пробелов. (Если и lstrip_ws, и rstrip_ws равны false, то некоторые строки могут состоять только из пробелов: они *не* будут пропущены, даже если skip_blanks равно true.)
true
join_lines
если обратная косая черта – последний символ (не перевод строки) в строке после удаления комментариев и пробелов, соединить следующую строку с ней, чтобы получить одну логическую строку; если N последовательных строк заканчиваются обратной косой чертой, то N+1 физических строк будут объединены для образования одной логической строки.
false
collapse_join
удаляет начальные пробелы из строк, которые присоединяются к предыдущей; имеет значение только если
(join_lines and not lstrip_ws)false
Отметим, что поскольку rstrip_ws может удалять завершающий перевод строки, семантика
readline()должна отличаться от семантики методаreadline()встроенного файлового объекта! В частности,readline()возвращаетNoneпри достижении конца файла: пустая строка может быть просто пустой строкой (или строкой из одних пробелов), если rstrip_ws равно true, а skip_blanks – нет.-
open(filename)¶ Открывает новый файл filename. Это переопределяет любые аргументы конструктора file или filename.
-
close()¶ Закрывает текущий файл и забывает всю информацию о нём (включая имя файла и текущий номер строки).
-
warn(msg[, line=None])¶ Выводит (в stderr) предупреждение, привязанное к текущей логической строке в текущем файле. Если текущая логическая строка в файле охватывает несколько физических строк, предупреждение относится ко всему диапазону, например
"lines 3-5". Если указан line, он переопределяет текущий номер строки; он может быть списком или кортежем для указания диапазона физических строк, или целым числом для одной физической строки.
-
readline()¶ Читает и возвращает одну логическую строку из текущего файла (или из внутреннего буфера, если строки ранее были «возвращены» с помощью
unreadline()). Если опция join_lines равна true, это может включать чтение нескольких физических строк, объединённых в одну строку. Обновляет текущий номер строки, поэтому вызовwarn()послеreadline()вызывает предупреждение о только что прочитанных физических строках. ВозвращаетNoneпри достижении конца файла, поскольку пустая строка может быть получена, если rstrip_ws равно true, а strip_blanks – нет.
-
readlines()¶ Читает и возвращает список всех логических строк, оставшихся в текущем файле. Это обновляет текущий номер строки до последней строки файла.
-
unreadline(line)¶ Помещает line (строку) во внутренний буфер, который будет проверяться последующими вызовами
readline(). Полезно для реализации синтаксического анализатора с просмотром на одну строку вперёд. Обратите внимание, что строки, «возвращённые» с помощьюunreadline(), впоследствии не проходят повторную очистку (удаление пробелов и т.п.) при чтении с помощьюreadline(). Если выполняется несколько вызововunreadline()перед вызовомreadline(), строки возвращаются в порядке «последний пришёл – первый вышел».
-
9.22. distutils.version – Классы номеров версий¶distutils.version – Version number classes
9.23. distutils.cmd – Абстрактный базовый класс для команд Distutils¶distutils.cmd – Abstract base class for Distutils commands
Этот модуль предоставляет абстрактный базовый класс Command.
-
class
distutils.cmd.Command(dist)¶ Абстрактный базовый класс для определения классов команд, «рабочих пчёл» Distutils. Полезная аналогия для классов команд – рассматривать их как подпрограммы с локальными переменными, называемыми options. Опции объявляются в
initialize_options()и определяются (получают свои окончательные значения) вfinalize_options(); оба метода должны быть определены в каждом классе команд. Различие между ними необходимо, потому что значения опций могут поступать из внешнего мира (командная строка, конфигурационный файл и т.д.), и любые опции, зависящие от других опций, должны вычисляться после обработки этих внешних воздействий – отсюдаfinalize_options(). Тело подпрограммы, где она выполняет всю свою работу на основе значений опций, – это методrun(), который также должен быть реализован в каждом классе команд.Конструктор класса принимает единственный аргумент dist, экземпляр
Distribution.
9.24. Создание новой команды Distutils¶Creating a new Distutils command
В этом разделе описываются шаги по созданию новой команды Distutils.
Новая команда находится в модуле пакета distutils.command. В этом каталоге есть шаблон под названием command_template. Скопируйте этот файл в новый модуль с тем же именем, что и реализуемая команда. Этот модуль должен содержать класс с тем же именем, что и модуль (и команда). Например, чтобы создать команду peel_banana (чтобы пользователи могли запускать setup.py peel_banana), нужно скопировать command_template в distutils/command/peel_banana.py, а затем отредактировать его так, чтобы он реализовывал класс peel_banana, подкласс distutils.cmd.Command.
Подклассы Command должны определять следующие методы.
-
Command.initialize_options()¶ Устанавливает значения по умолчанию для всех параметров, поддерживаемых этой командой. Обратите внимание: эти умолчания могут быть переопределены другими командами, сценарием setup, файлами конфигурации или командной строкой. Поэтому здесь не место прописывать зависимости между параметрами; обычно реализация
initialize_options()представляет собой просто набор присваиванийself.foo = None.
-
Command.finalize_options()¶ Устанавливает окончательные значения для всех параметров, поддерживаемых этой командой. Этот метод всегда вызывается как можно позже, то есть после того, как были выполнены все присваивания параметров из командной строки или из других команд. Таким образом, это место для кодирования зависимостей между параметрами: если foo зависит от bar, то можно безопасно задать foo из bar при условии, что foo всё ещё имеет то же значение, которое было присвоено в
initialize_options().
-
Command.run()¶ Смысл существования команды: выполнить действие, ради которого она создана, управляемое параметрами, инициализированными в
initialize_options(), настроенными другими командами, сценарием setup, командной строкой и файлами конфигурации, и окончательно установленными вfinalize_options(). Весь вывод в терминал и взаимодействие с файловой системой должны выполняться черезrun().
-
Command.sub_commands¶ sub_commands формализует понятие «семейства» команд, например
installкак родительская команда с подкомандамиinstall_lib,install_headersи т.д. Родитель семейства команд определяет sub_commands как атрибут класса; это список 2-кортежей(command_name, predicate), где command_name – строка, а predicate – функция, строка илиNone. predicate – метод родительской команды, который определяет, применима ли соответствующая команда в текущей ситуации. (Например,install_headersприменима только при наличии C-заголовочных файлов для установки.) Если predicate равноNone, эта команда применима всегда.sub_commands обычно определяется в конце класса, потому что предикаты могут быть методами класса, а значит, они уже должны быть определены. Канонический пример – команда install.
9.25. distutils.command – Отдельные команды Distutils¶distutils.command – Individual Distutils commands
9.26. distutils.command.bdist – Сборка двоичного установщика¶distutils.command.bdist – Build a binary installer
9.27. distutils.command.bdist_packager – Абстрактный базовый класс для упаковщиков¶distutils.command.bdist_packager – Abstract base class for packagers
9.28. distutils.command.bdist_dumb – Сборка «тупого» установщика¶distutils.command.bdist_dumb – Build a “dumb” installer
9.29. distutils.command.bdist_msi – Сборка двоичного пакета Microsoft Installer¶distutils.command.bdist_msi – Build a Microsoft Installer binary package
-
class
distutils.command.bdist_msi.bdist_msi¶ Создаёт двоичный пакет Windows Installer (.msi).
В большинстве случаев
bdist_msiустановщик лучше, чемbdist_wininstустановщик, так как он обеспечивает лучшую поддержку платформ Win64, позволяет администраторам выполнять неинтерактивные установки, а также установку через групповые политики.
9.30. distutils.command.bdist_rpm – Сборка двоичного дистрибутива в формате Redhat RPM и SRPM¶distutils.command.bdist_rpm – Build a binary distribution as a Redhat RPM and SRPM
9.31. distutils.command.bdist_wininst – Сборка установщика Windows¶distutils.command.bdist_wininst – Build a Windows installer
9.32. distutils.command.sdist – Сборка дистрибутива из исходных кодов¶distutils.command.sdist – Build a source distribution
9.33. distutils.command.build – Сборка всех файлов пакета¶distutils.command.build – Build all files of a package
9.34. distutils.command.build_clib – Сборка любых C-библиотек в пакете¶distutils.command.build_clib – Build any C libraries in a package
9.35. distutils.command.build_ext – Сборка любых расширений в пакете¶distutils.command.build_ext – Build any extensions in a package
9.36. distutils.command.build_py – Сборка .py/.pyc файлов пакета¶distutils.command.build_py – Build the .py/.pyc files of a package
-
class
distutils.command.build_py.build_py¶
-
class
distutils.command.build_py.build_py_2to3¶ Альтернативная реализация build_py, которая также запускает библиотеку преобразования 2to3 для каждого .py файла, подлежащего установке. Чтобы использовать это в файле setup.py для дистрибутива, предназначенного для работы с Python 2.x и 3.x, добавьте:
try: from distutils.command.build_py import build_py_2to3 as build_py except ImportError: from distutils.command.build_py import build_py
в файл setup.py, а затем:
cmdclass = {'build_py': build_py}
в вызов setup().
9.37. distutils.command.build_scripts – Сборка сценариев пакета¶distutils.command.build_scripts – Build the scripts of a package
9.38. distutils.command.clean – Очистка области сборки пакета¶distutils.command.clean – Clean a package build area
Эта команда удаляет временные файлы, созданные build и его подкомандами, например промежуточные объектные файлы. С опцией --all будет удалена вся директория сборки.
Модули расширения, собранные на месте, не будут очищены, так как они не находятся в директории сборки.
9.39. distutils.command.config – Выполнение конфигурации пакета¶distutils.command.config – Perform package configuration
9.40. distutils.command.install – Установить пакет¶distutils.command.install – Install a package
9.41. distutils.command.install_data – Установить файлы данных из пакета¶distutils.command.install_data – Install data files from a package
9.42. distutils.command.install_headers – Установить заголовочные файлы C/C++ из пакета¶distutils.command.install_headers – Install C/C++ header files from a package
9.43. distutils.command.install_lib – Установить файлы библиотек из пакета¶distutils.command.install_lib – Install library files from a package
9.44. distutils.command.install_scripts – Установить скриптовые файлы из пакета¶distutils.command.install_scripts – Install script files from a package
9.45. distutils.command.register – Зарегистрировать модуль в Python Package Index¶distutils.command.register – Register a module with the Python Package Index
Команда register регистрирует пакет в Python Package Index.
Это подробно описано в PEP 301.
9.46. distutils.command.check – Проверить метаданные пакета¶distutils.command.check – Check the meta-data of a package
Команда check выполняет несколько проверок метаданных пакета.
Например, она проверяет, что все обязательные метаданные переданы в
аргументах функции setup().