"""distutils.command.buildImplements the Distutils 'build' command."""import sys, osfrom distutils.core import Commandfrom distutils.errors import DistutilsOptionErrorfrom distutils.util import get_platformdef show_compilers():from distutils.ccompiler import show_compilersshow_compilers()class build(Command):description = "build everything needed to install"user_options = [('build-base=', 'b',"base directory for build library"),('build-purelib=', None,"build directory for platform-neutral distributions"),('build-platlib=', None,"build directory for platform-specific distributions"),('build-lib=', None,"build directory for all distribution (defaults to either " +"build-purelib or build-platlib"),('build-scripts=', None,"build directory for scripts"),('build-temp=', 't',"temporary build directory"),('plat-name=', 'p',"platform name to build for, if supported ""(default: %s)" % get_platform()),('compiler=', 'c',"specify the compiler type"),('parallel=', 'j',"number of parallel build jobs"),('debug', 'g',"compile extensions and libraries with debugging information"),('force', 'f',"forcibly build everything (ignore file timestamps)"),('executable=', 'e',"specify final destination interpreter path (build.py)"),]boolean_options = ['debug', 'force']help_options = [('help-compiler', None,"list available compilers", show_compilers),]def initialize_options(self):self.build_base = 'build'# these are decided only after 'build_base' has its final value# (unless overridden by the user or client)self.build_purelib = Noneself.build_platlib = Noneself.build_lib = Noneself.build_temp = Noneself.build_scripts = Noneself.compiler = Noneself.plat_name = Noneself.debug = Noneself.force = 0self.executable = Noneself.parallel = Nonedef finalize_options(self):if self.plat_name is None:self.plat_name = get_platform()else:# plat-name only supported for windows (other platforms are# supported via ./configure flags, if at all). Avoid misleading# other platforms.if os.name != 'nt':raise DistutilsOptionError("--plat-name only supported on Windows (try ""using './configure --help' on your platform)")plat_specifier = ".%s-%d.%d" % (self.plat_name, *sys.version_info[:2])# Make it so Python 2.x and Python 2.x with --with-pydebug don't# share the same build directories. Doing so confuses the build# process for C modulesif hasattr(sys, 'gettotalrefcount'):plat_specifier += '-pydebug'# 'build_purelib' and 'build_platlib' just default to 'lib' and# 'lib.<plat>' under the base build directory. We only use one of# them for a given distribution, though --if self.build_purelib is None:self.build_purelib = os.path.join(self.build_base, 'lib')if self.build_platlib is None:self.build_platlib = os.path.join(self.build_base,'lib' + plat_specifier)# 'build_lib' is the actual directory that we will use for this# particular module distribution -- if user didn't supply it, pick# one of 'build_purelib' or 'build_platlib'.if self.build_lib is None:if self.distribution.ext_modules:self.build_lib = self.build_platlibelse:self.build_lib = self.build_purelib# 'build_temp' -- temporary directory for compiler turds,# "build/temp.<plat>"if self.build_temp is None:self.build_temp = os.path.join(self.build_base,'temp' + plat_specifier)if self.build_scripts is None:self.build_scripts = os.path.join(self.build_base,'scripts-%d.%d' % sys.version_info[:2])if self.executable is None and sys.executable:self.executable = os.path.normpath(sys.executable)if isinstance(self.parallel, str):try:self.parallel = int(self.parallel)except ValueError:raise DistutilsOptionError("parallel should be an integer")def run(self):# Run all relevant sub-commands. This will be some subset of:# - build_py - pure Python modules# - build_clib - standalone C libraries# - build_ext - Python extensions# - build_scripts - (Python) scriptsfor cmd_name in self.get_sub_commands():self.run_command(cmd_name)# -- Predicates for the sub-command list ---------------------------def has_pure_modules(self):return self.distribution.has_pure_modules()def has_c_libraries(self):return self.distribution.has_c_libraries()def has_ext_modules(self):return self.distribution.has_ext_modules()def has_scripts(self):return self.distribution.has_scripts()sub_commands = [('build_py', has_pure_modules),('build_clib', has_c_libraries),('build_ext', has_ext_modules),('build_scripts', has_scripts),]
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。