Windows10最新更新后subprocess.Popen()报[WinError 50]请求不受支持
Windows 10下Python subprocess.Popen调用外部程序出现WinError 50的解决方法
问题场景
在已安装所有最新更新的Windows 10系统中,调用Python的subprocess.Popen()执行指定外部程序时触发如下错误,该功能此前可正常运行:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community>python3 Python 3.10.11 (tags/v3.10.11:7d4cc5a, Apr 5 2023, 00:38:17) [MSC v.1929 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import subprocess >>> subprocess.Popen(['Z:/depot/kJams/Scripting/AutoPin.exe', 'parameter']) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\lib\subprocess.py", line 971, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\lib\subprocess.py", line 1456, in _execute_child hp, ht, pid, tid = _winapi.CreateProcess(executable, args, OSError: [WinError 50] The request is not supported
解决方法
WinError 50表示「请求不支持」,可尝试以下方案排查:
- 检查架构兼容性:当前使用的是64位Python(AMD64),确认
AutoPin.exe是32位还是64位程序。若为32位,尝试切换到32位Python执行代码,或验证系统跨架构调用的兼容性。 - 提升运行权限:以管理员身份启动Python解释器,再执行调用代码,排除Windows更新带来的权限限制。
- 调整subprocess调用参数:
- 添加
shell=True参数:subprocess.Popen(['Z:/depot/kJams/Scripting/AutoPin.exe', 'parameter'], shell=True) - 或拼接完整命令行字符串调用:
subprocess.Popen('Z:/depot/kJams/Scripting/AutoPin.exe parameter', shell=True)
- 添加
- 验证路径权限:确认当前用户对
Z:/depot/kJams/Scripting/目录及AutoPin.exe拥有执行权限,可尝试将exe复制到本地磁盘(如C盘)后再调用,排除网络路径的权限问题。 - 临时关闭安全软件:Windows Defender或第三方安全软件可能因系统更新加强了拦截策略,临时关闭后测试是否能正常调用。
- 重装Python:当前使用的是Microsoft Store版本的Python,更新后可能存在兼容性问题,卸载后从Python官网下载官方安装包重新安装。
内容的提问来源于stack exchange,提问作者David M. Cotter
相关产品推荐
相关产品推荐

