您好,
我有一个 Python 源代码文件“test.py”,其内容是print("Hello World")
.
当我尝试使用python3.8上集成的py_compile模块将其编译为字节码时,操作成功,可以运行.pyc文件。
但是,如果我尝试使用 python3.8 上的集成 dis 模块(带有python3.8 -m dis {PATH}
)读取内容,CPython 会给我这个错误:
Traceback (most recent call last):
File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/usr/lib/python3.8/dis.py", line 553, in <module>
_test()`
File "/usr/lib/python3.8/dis.py", line 549, in _test
code = compile(source, args.infile.name, "exec")
ValueError: source code string cannot contain null bytes
源代码的路径是/home/{USER}/test.py
(C:\Users\{USER}\test.py
在Windows下)。
.pyc 文件的路径是/home/{USER}/__pycache__/test.cpython-38.pyc
(C:\Users\{USER}\__pycache__\test.cpython-38.pyc
在 Windows 下)。
我在这些情况下发现了这个问题:
在 WSL 和 Linux 下,我在实验前更新了所有包。
预先感谢您的每一个回复。
如果查看 dis 模块的源代码:
https://github.com/python/cpython/blob/3.8/Lib/dis.py#L540
你可以看到 -m 调用正在寻找一个 .py 源文件来编译,然后一步反汇编。它不支持直接给它 .pyc 。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句