Jython 注册表
由于没有好的平台无关的 Windows 注册表(或 Unix 环境变量)等效项,因此 Java 有自己的环境变量命名空间。Jython 从以下来源获取其命名空间(后面的来源会覆盖前面找到的默认值)。
- Java 系统属性:通常在命令行中作为 java 解释器的选项传递。
- Jython “注册表”文件,其中包含 prop=value 对。有关 Jython 用于查找注册表文件的算法,请参见下文。
- 用户的个人注册表文件,其中包含类似格式的 prop/value 对。用户的注册表文件位于
"user.home"+"/.jython"
- Jython 属性:在命令行中作为 jython 类的选项指定。请参见解释器的 -D 选项。
注册表属性
Jython 识别以下属性。更详细的文档可以在 Jython 发行版提供的 registry
文件中的注释中找到。
python.path 等效于 CPython 的 PYTHONPATH
环境变量
python.cachedir 用于缓存的目录 - 目前仅限包信息。此目录必须对用户可写。如果目录是绝对路径,则按原样使用,否则将其解释为相对于 sys.prefix 的相对路径。
python.verbose 设置不同程度信息消息的详细程度级别。按详细程度递增顺序排列的有效值为“error”、“warning”、“message”、“comment”、“debug”
python.security.respectJavaAccessibility 通常,Jython 只能提供对类公共成员的访问权限。如果此属性设置为 false,并且您使用的是 Java 9 之前的 Java 版本,那么 Jython 可以访问非公共字段、方法和构造函数。由于 Java 从版本 9 开始对可访问性的更改,这在将来可能会被弃用。
python.console 控制台类的名称。可以使用此属性安装支持 GNU readline 的替代控制台类。Jython 已经包含这样的控制台类,可以通过将此属性设置为 org.python.util.ReadlineConsole
来启用它。
python.console.readlinelib 允许选择 GNU readline 支持的后备实现。可以是 GnuReadline 或 Editline。此属性仅在 python.console 设置为 org.python.util.ReadlineConsole 时使用。
python.startup 在每次交互式会话开始时运行的文件,但在脚本运行后使用 -i 标志进行插入时不运行。
python.modules.builtin 添加、删除或覆盖内置模块。
python.cpython2 用于调用 CPython 的命令,当需要时,例如在模块和方法比 Java 本地支持的更长的情况下。
查找注册表文件
以下步骤用于查找 Jython 注册表文件,以及设置 sys.prefix
的 Python 值。首先计算根目录
- 如果存在名为
python.home
的属性,则将其用作根目录。 - 否则,如果存在属性
install.root
,则使用它。 - 如果这两个属性都不存在,Jython 就会在 Java 类路径上搜索文件“jython.jar”,该路径由系统属性
java.class.path
定义。实际的文件系统不会被搜索,只有类路径中定义的路径(其中之一必须包含“jython.jar”)。
找到根目录后,sys.prefix
和 sys.exec_prefix
将设置为该目录,并且 sys.path
将追加 rootdir/Lib。使用的注册表文件为 rootdir/registry。