PySide6 库生成的 Python 代码 source code string cannot contain null bytes
时间: 2025-07-05 09:59:04 浏览: 13
### 解决 PySide6 生成的 Python 代码中不能包含空字节的问题
当遇到 `source code string cannot contain null bytes` 错误时,这通常意味着源文件中存在不可见字符或二进制数据。对于由 PySide6 工具链生成的资源文件 (`.qrc`) 或者其他类型的文件转换成 Python 文件的过程中可能出现此错误。
#### 方法一:清理输入文件中的特殊字符
确保 `.qrc` 文件或其他任何作为输入给 rcc 的 XML 资源定义文件不含有非法字符或编码问题。可以尝试手动编辑这些文件来移除不必要的空白符、BOM 字节标记等[^1]。
#### 方法二:更新 pyrcc 版本并调整命令行选项
如果使用的是较旧版本的工具,则可能需要升级到最新版以获得更好的兼容性和修复已知 bug。此外,在调用 pyrcc4 或相应工具时加上 `-py3` 参数可使生成适合 Python 3.x 使用的同时也向后兼容至 Python 2.6 及以上版本的代码:
```bash
pyrcc5 -o output.py input.qrc -py3
```
注意这里假设读者正在使用 PyQt5/PySide2 所附带的新一代编译器 (`pyrcc5`);如果是针对更早些时候的技术栈,请替换为对应的工具名称如 `pyrcc4` 并保持其余参数不变。
#### 方法三:修改生成后的 Python 文件
另一种解决方案是在每次构建之后通过脚本来处理生成出来的 .py 文件,去除其中所有的 `\0` 即 ASCII NUL(零)字符。下面是一个简单的例子展示如何利用正则表达式完成这项工作:
```python
import re
def remove_null_bytes(file_path):
with open(file_path, "rb") as f:
content = f.read()
cleaned_content = re.sub(b'\x00', b'', content)
with open(file_path, "wb") as f:
f.write(cleaned_content)
remove_null_bytes('path/to/generated_file.py')
```
上述函数会读取指定路径下的文件内容,并将其所有出现过的空字节删除后再写回原位置保存。
阅读全文
相关推荐


















