Linux下Wine运行Windows Python 3.8重定向失败求助
问题
在Linux系统通过Wine运行Windows版本Python 3.8时,交互模式正常,但执行输出重定向命令失败:
执行命令:
wine python -v -c "import os;print(os)" > output.txt
报错信息:
# Z:\WinePython\lib\encodings\__pycache__\latin_1.cpython-38.pyc matches Z:\WinePython\lib\encodings\latin_1.py # code object from 'Z:\\WinePython\\lib\\encodings\\__pycache__\\latin_1.cpython-38.pyc' import 'encodings.latin_1' # <_frozen_importlib_external.SourceFileLoader object at 0x00000000007394C0> # Z:\WinePython\lib\__pycache__\io.cpython-38.pyc matches Z:\WinePython\lib\io.py # code object from 'Z:\\WinePython\\lib\\__pycache__\\io.cpython-38.pyc' # Z:\WinePython\lib\__pycache__\abc.cpython-38.pyc matches Z:\WinePython\lib\abc.py # code object from 'Z:\\WinePython\\lib\\__pycache__\\abc.cpython-38.pyc' import '_abc' # <class '_frozen_importlib.BuiltinImporter'> import 'abc' # <_frozen_importlib_external.SourceFileLoader object at 0x0000000000739970> import 'io' # <_frozen_importlib_external.SourceFileLoader object at 0x00000000007396A0> Fatal Python error: init_sys_streams: can't initialize sys standard streams Python runtime state: core initialized OSError: [WinError 6] Invalid handle Current thread 0x000000f6 (most recent call first): <no Python frame>
需要让该场景支持输出重定向,以适配外部进程包装器。
解决建议
用
wineconsole启动Python:wineconsole会模拟Windows控制台环境,能正确处理标准流重定向,命令改为:wineconsole --backend=curses python -v -c "import os;print(os)" > output.txt--backend=curses参数用于让wineconsole使用终端后端,避免弹出图形窗口。在Python内部处理输出写入:绕开系统级重定向,直接在代码里将内容写入文件,命令改为:
wine python -c "import os; open('Z:/path/to/your/output.txt', 'w').write(str(os))"路径可以直接指定Linux本地目录(Wine会将Linux根目录映射为Z盘)。
升级Wine版本:部分旧版Wine在标准流重定向的兼容性上存在bug,更新到最新稳定版(如8.x系列)可能修复该问题。
通过
winetricks安装Python:避免手动复制Windows版本Python,用winetricks安装适配Wine环境的Python:winetricks python38安装后再执行重定向命令,兼容性会更好。
内容的提问来源于stack exchange,提问作者halidziya
相关产品推荐
相关产品推荐

