Emacs 文本编辑器,editor

其他的启动选项

现在已经学习了如何运行交互输入的代码,如何以各种方式启动保存在文件中的代码 —— 系统命令行,图标点击,导入与 execs,GUI 如 IDLE,等更多。这囊括了日常用法中的大多数技术,且足够运行本书中你将看到的代码。 然而,还有其他运行 Python 代码的方式,它们的大多数都有特殊的作用。为了本书的完整性和参考性,下面几节会快速浏览这些方式中的一些。

其他启动选项——嵌入调用

在一些特殊的领域,Python 代码可能被一个封闭系统自动运行。在这种情况下,我们说 Python 程序被嵌入另一个程序(也就是被另一个程序运行)。Python 代码本身可能被输入到文件文件中,存储在数据库中,从 HTML 页面获取,从 XML 文档解析等等。但从操作的角度看,另一个系统 —— 不是你 —— 可能告诉 Python 来运行你创建的代码。 这种嵌入的执行模式通常被用来支持终端用户自定义 —— 比如,一个游戏程序,可能允许通过在关键时间点运行用户可访问的嵌入的 Python 代码来修改游戏。用户通过提供或修改 Python 代码,可以修改这种类型的系统。因为 Python 代码是被解释的,不需要重新编辑整个系统来整合这个更改(参见第 2 章获取更多关于 Python 代码如何运行的知识) 在这种模式,运行代码的封闭系统可以由 C,C++,或甚至 Java(当 Jython 系统被使用时)来编写。作为一个例子,通过调用 Python 运行时 API(当 Python 被编译在机器上时被创建的库所导出的一套服务)中的函数是可能从一个 C 程序创建和运行 Python 代码的字符串的:
  1. ...
  2. Py_Initialize(); // This is C, not Python
  3. PyRun_SimpleString("x = 'brave ' + 'sir robin'"); // But it runs Python code
在这个 C 代码片段中,用 C 语言编码的程序通过链接它的库来嵌入 Python 解释器,且传给解释器一个 Python 赋值语句来运行。C 程序也可以获得对 Python 模块和对象访问权限并通过其它的 Python API 工具来处理或执行它们。 本书不是关于 Python/C 集成的,但应该意识到,你可能或不是真正启动你创建的 Python 程序的那个人,这取决于你的组织计划如何使用 Python。不管怎样,通常仍可使用这里描述的交互的和基于文件的启动技术来测试代码(同那些可能最终使用代码的封闭系统隔离开)[10]。
[10]: 参见 Programming Python (O’Reilly) 获取更多关于在 C/C++ 中嵌入 Python 的知识。嵌入的 API 能直接调用 Python 函数,加载模块,还有更多。而且,注意到 Jython 系统允许 Java 程序使用一个基于 Java 的 API(一个 Python 解释器类)来调用 Python 代码。

其他启动选项——冰封的二进制可执行文件

在第 2 章中描述的冰封的二进制可执行文件,是将程序的字节码和 Python 解释器打包成一个单独的可执行程序。这个方法能让 Python 程序以启动任何其他可执行程序的相同方式启动(图标点击,命令行等)。 虽然这个选项很适合产品发布,但它并不是并不在程序开发的过程中使用;通常只在发布前冻结(在开发结束后)。参见前一章来更多了解这个选项。

其他启动选项——文本编辑器启动选项

如前面提及的,虽然它们不是成熟的 IDE GUIs,但大多数程序员友好文本编辑器都支持编辑,而且可能运行 Python 程序。 这些支持可能是内置的或从网上可以获取。比如,如果你熟悉 Emacs 文本编辑器,就可以从那个文本编辑器内部进行所有的 Python 编辑和启动。参见 www.python.org/editors 的文本编辑器资源页面获取更多细节,或者用短语 “Python editors” 搜索网络。 注:上面页面网址已更改为:wiki.python.org/moin/PythonEditors # 其他启动选项——还有其他启动选项 根据平台,可能有其他启动 Python 程序的方法。比如,在一些 Macintosh 系统上可以拖动 Python 程序文件图标到 Python 解释器图标上来让它们执行,且在一些 Windows 系统上总是可以用开始目录中的运行… 选项来启动 Python 脚本。 另外,Python 标准库有允许 Python 程序被其他 Python 程序在独立进程(比如,os.popen, os.system)中启动的实用程序,且 Python 脚本还可以在更大的上下文如网络中被孵化(比如,一个网页可以调用服务器上的一个脚本);然而,这些都超出了当前章的范围。

其他启动选项——未来的可能性?

本章反映了当前的实践,但这里的许多材料是和平台和时间有关的。的确,这里介绍的许多执行和启动细节都是在本书的各个版本的流行期内出现的。如程序执行选项一样,随着时间进展,出现新的程序启动选项并非不可能。 新的操作系统,和现存系统的新版本,也可能提供超出这里概述的那些技术的执行技术。通常,因为 Python 与这些变化保持一致,你应该能以任何对你使用的机器有意义的方式启动 Python 程序,包括现在和未来 —— 比如通过在平板电脑和智能手机上滑屏,在虚拟现实中抓住图标,或在和同事的交谈中喊出脚本的名字。 实现的变更还可以在一定程度上影响启动方案(比如,一个完整的编译器可以产生普通的可执行文件,它启动得非常类似当前的冰冻二进制文件)。然而,如果我真的知道未来会怎样,我就很可能在和股票经纪人交谈而不是在写这些文字了!