我正在使用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上,但没有例外。