Python dis 模块在 Python 3 中不起作用




你好,
我有一个Python源代码文件,"test.py";,其内容为CCD_ 1
当我尝试在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(在Windows下为C:Users{USER}test.py(
.pyc文件的路径为/home/{USER}/__pycache__/test.cpython-38.pyc(在Windows下为C:Users{USER}__pycache__test.cpython-38.pyc(

我在这些情况下发现了这个问题:

  • Python 3.8和Ubuntu中的Python 3.9(在WSL1下(
  • Windows 10下的Python 3.8
  • Linux下的Python 3.9(Ubuntu 21.04(。

在WSL和Linux下,我在实验前更新了所有包

提前感谢您的回复。

如果您查看dis模块的源代码:

https://github.com/python/cpython/blob/3.8/Lib/dis.py#L540

您可以看到,-m调用正在查找一个.py源文件,以便在一个步骤中进行编译和反汇编。它不支持直接给它.pyc。

最新更新