首页 > 解决方案 > pyc 文件显示“源代码字符串不能包含空字节”

问题描述

语境

1.py我在 macOS 上使用vim编码编写了这个脚本utf-8

import sys
sys.path += ['./modules']
from _modules._signal import *

然后使用编译它

python3 -m py_compile 1.py

字节码__pycache__/1.cpython-39.pyc可以通过

python3 __pycache__/1.cpython-39.pyc

没有问题。


问题

众所周知,字节码是跨平台的。因此,我将其发送.pyc到了 Windows 10。

这是目录树。

1/ #We are here at first.
└ 2/
└ 3/
└ __pycache__/
 └ 1.cpython-39.pyc

当我执行

python3 __pycache__/1.cpython-39.pyc

或者

cd 2/
python3 ../__pycache__/1.cpython-39.pyc

它工作(与ImportError)。

但是,如果我执行

cd 3/
python3 ../__pycache__/1.cpython-39.pyc

它意外地失败了。这是输出:

Traceback (most recent call last):
  File "1.py", line 3, in <module>
ValueError: source code string cannot contain null bytes

为什么?这是一个错误吗?

我在 macOS 和 Arch Linux 上采取了相同的步骤,没有问题。只有 Windows 10 会出现此错误。


环境

标签: pythonpython-3.xbytecode

解决方案


推荐阅读