有什么方法可以使Jython Py_compile不记录源文件的绝对路径



我正在使用jython 2.5.3中的py_compile将一些python文件编译为$ py.class文件。

我注意到此模块似乎记录了源文件的绝对路径,因此,如果我移动源树的位置,则$ py.class文件会更改。

是否有任何方法可以使Py_compile记录相对路径而不是绝对路径?我可以看到为什么需要在那里进行例外处理,但我不想参考绝对路径,因为它会泄漏有关它位于计算机上的位置的信息。


示例:

jython1.py:

import sys
import py_compile
if __name__ == '__main__':
    infile = sys.argv[1]
    py_compile.compile(infile)

jython2.py:

def doit(a,b):
    print a/b
doit(3,4)
doit(3,0)

我可以通过

运行此操作
java -jar path/to/jython-standalone-2.5.3.jar jython1.py jython2.py

生成的jython2 $ py.class文件包含通往jython2.py

的路径

糟糕,没有足够近距离阅读文档。py_compile.compile()有第三个论点(我的重点(:

py_compile.compile(file [,cfile [,dfile [,doraise]]](

将源文件编译为字节代码并写出字节代码缓存 文件。源代码是从文件名文件加载的。字节代码 写给CFILE,默认为文件 'c'(如果优化 在当前解释器中启用(。如果指定了dfile,则 用作错误消息中的源文件的名称,而不是文件。 如果doraise为真,则在错误时会增加pycompileerror 编译文件时遇到。如果doraise是错误的(默认(, 错误字符串写在sys.stderr上,但没有例外。

最新更新