Python 已编译的字节码:如果存在非 ascii 字符,则无法读取文件

Python compiled bytecode: Unable to read file if non-ascii character are present

首先,介绍一些背景知识:我在日本工作,所以带有日文字符的文件夹很常见(类似于作业フォルド,"working folder")。

我有一个 python 程序,然后将其编译为字节码。如果我从 windows 命令行执行这个编译文件,它 运行 没有问题:

例如:

python.exe C:\作業フォルダ\myProgram.py

然而,一旦使用以下命令编译:

python.exe -OO -m py_compile myProgram.py

我收到以下错误:

python.exe C:\作業フォルダ\myCompiledProgram.pyc
python: Can't reopen pyc file

如果我进入作业フォルド文件夹并执行如下:

python.exe myCompiledProgram.pyc

运行没有问题。但是,如果我给出绝对路径,我希望它为 运行,而且我想将文件路径作为参数传递,这也会产生如下错误:

RuntimeError: Unable to open C:\作業フォルダ\somefile.txt

为什么只有编译后才会出现这种情况?有办法解决吗?


A related answer 建议解决方法是将脚本移出具有非 ASCII 字符的目录。 Junctions/symlinks 也可以用于 'fake' 非 ASCII 目录名,但要复杂得多。