【发布时间】:2013-12-10 13:00:56
【问题描述】:
我意识到编译一个python脚本后,它修复了这个脚本的路径信息。
例如: 我有一个作为 /tmp/src/foo.py 的 python 脚本,它有一个打印命令
print foo
现在我正在编译这段代码并将其移动到编译目录。
python -m compileall -f /tmp/src/foo.py
mv /tmp/src/foo.pyc /tmp/compiled/
然后我正在运行脚本,但它给出了错误,因为我除外
python /tmp/compiled/foo.pyc
Traceback (most recent call last):
File "/tmp/src/foo.py", line 1, in <module> # focus heree
print foo
NameError: name 'foo' is not defined
如您所见,脚本的文件名在编译之前出现错误。 (与我给编译命令的路径完全相同)
其实我对这种情况没有问题,我问是因为我只是想知道。原因是什么,有什么方法可以查看错误的真实路径?
在我看来,我们不能更改二进制文件,但也许我们可以在运行编译代码时给 python 一个命令行参数,或者我们可以在源代码中添加一个代码段?
谢谢
【问题讨论】:
-
“有什么方法可以查看错误的真实路径?”是什么意思?您已经看到了真正的路径,对吗?你想在那里的跟踪中看到什么?
-
为什么要手动“编译”一个脚本,为什么要把它放在不同的目录中?
-
@Forbidden Overseer 我看到了源路径。我想查看编译代码的路径。
-
.pyc 不应该与原始源分开,它们只不过是一个“缓存”。这就是你得到这条路的原因。为什么要做这样的事情?
-
@Faust 你没看问题!我没有问题。我只是想知道。
标签: python compiler-construction path compilation