2013-08-16 63 views
0

所以在我们的工作中,我们正在重新编译python 2.7.3。但我遇到了一些问题。有些项目不能编译。好的,文件是这样说的。Python源代码:哪些python项目是核心,哪些是库?

但是VS 2008中项目文件的列表非常混乱。许多项目都以下划线'_'开头。其他人没有。我认为以下划线开头的项目是非核心项目?也许他们是依赖于主python DLL的库项目?

另一个快速的问题。有些项目无法生成错误消息$(HOST_PYTHON)未定义。那是什么?

+0

你是什么意思的“项目”?我不认为Python的来源有这样的概念;你的IDE定义了什么? – user2357112

+1

在python源文件中查找PCBuild文件夹。那里有26 * .vcproj文件。 –

+0

您是通过打开并构建'.sln',运行其中一个批处理文件,还是逐个手动构建项目来做到这一点?你可以做最后一个,但你需要按照正确的顺序构建,并且可能需要做其他的步骤。例如,在构建并配置python.exe或者使用不同的“引导Python”之前,您不能构建Tkinter,因为构建过程部分是用Python编写的。 – abarnert

回答

1

PCbuild目录中的readme.txt解释了每个项目的用途(虽然它可能不完整)。这一点,以及有关Python所带来的一些基本知识应该能够为您提供足够的信息来找出您想要的任何区别。

至于下划线:所有的模块(除了可能的一些特殊情况,其中没有任何实际的C代码)依赖于DLL。 “规则”是构建模块的项目是为它们构建的模块命名的;用户可见模块不以下划线开头,用用户可见的Python模块包装的模块可以做......但是一些最老的模块并不完全遵循该规则,并且PCbuild本身也有一些例外 - 例如,​​构建_sqlite3模块,而不是sqlite3。所以,除了作为一个经验法则,你不能依赖它。无论如何,这对你的目的来说并不重要。

总之,什么是“核心”取决于你的意思是说什么,但是你肯定会至少需要:

  • pythoncore:主要DLL其他一切用途。
  • pythonpythonw:两个顶级可执行文件;你需要一个或另一个(除非你打算嵌入Python而不是运行解释器)。 * mkbuildinfomkversioninfo:用于将构建信息烘焙到其他项目(我相信包括python/pythonw)的工具。

如果您有关于某个模块的具体问题,并且您无法从readme.txt或主源文件顶部的注释中找到它,可以询问。但是,简单地说,其他项目应包括:

  • pylauncher:构建这是我们用来使其更容易有两种版本的Python之间,然后基于Unix风格shbang条线开关启动器。
  • 以C语言实现的各种模块(加上pyexpat,用于构建至少一个其他模块,加上unicodedata,它可能没有任何C代码,但仍然需要构建)。
  • 各种测试工具。
  • kill_python帮手工具。

一些项目未能建立与$(HOST_PYTHON)没有定义错误消息。那是什么?

有些项目,如sslTkinter模块,有一个构建过程,部分使用Python。如果你遵循标准的构建过程,python.exe将被构建并准备在你到达那里时使用。但是,您也可以通过将HOST_PYTHON设置为预先构建的Python来“引导”事物。

+0

感谢您指出自述文件。我没有看到它在所有其他文件中。它确实包含了很多有用的信息。我想出了HOST_PYTHON属性意味着什么。 –