You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows10下Python嵌入式版本使用Cython cythonize工具报错

解决Python嵌入式版本下cythonize报错ModuleNotFoundError: No module named 'distutils'

问题详情

使用Python嵌入式版本(不愿切换至安装版),执行cythonize utils.py命令时触发以下错误:

Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "D:\Develop\python\Scripts\cythonize.exe\__main__.py", line 7, in <module>
  File "D:\Develop\python\Lib\site-packages\Cython\Build\Cythonize.py", line 251, in main
    _cython_compile_files(all_paths, options)
  File "D:\Develop\python\Lib\site-packages\Cython\Build\Cythonize.py", line 67, in _cython_compile_files
    ext_modules = cythonize(
                  ^^^^^^^^^^
  File "D:\Develop\python\Lib\site-packages\Cython\Build\Dependencies.py", line 1010, in cythonize
    module_list, module_metadata = create_extension_list(
                                   ^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Develop\python\Lib\site-packages\Cython\Build\Dependencies.py", line 784, in create_extension_list
    from distutils.extension import Extension
ModuleNotFoundError: No module named 'distutils'

相关配置及文件信息:

  • python312._pth内容:
python312.zip
DLLs
Lib
Lib\..
Lib\site-packages
# Uncomment to run site.main() automatically
#import site
  • 已安装包列表:
Package    Version
---------- -------
asgiref    3.8.1
Cython     3.0.10
Django     5.0.6
pip        24.1.1
setuptools 70.0.0
sqlparse   0.5.0
tzdata     2024.1
wheel      0.43.0
  • utils.py内容:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# cython: language_level=3
import sys
def sayHello(name:str):
    print("sayHello utils:" + name)

已尝试将Cython路径添加至python312.pth,但未解决问题。

可行解决方案

方案1:启用site模块(推荐)

Python嵌入式版本默认注释了site模块的加载,而setuptools已包含兼容版的distutils,启用site模块后会自动处理路径:

  1. 打开python312._pth文件,将#import site行的注释符号#去掉;
  2. 保存文件后,关闭并重新打开终端;
  3. 再次执行cythonize utils.py即可。

方案2:手动添加distutils路径

如果不想启用site模块,可通过脚本临时添加setuptools内置的distutils路径:

  1. 创建run_cythonize.py文件,内容如下:
import sys
# 替换为你的嵌入式Python的setuptools/_distutils路径
sys.path.append("D:\\Develop\\python\\Lib\\site-packages\\setuptools\\_distutils")
from Cython.Build.Cythonize import main
main()
  1. 执行命令:python run_cythonize.py utils.py

方案3:复制完整distutils文件夹

从同版本的Python安装版(Python 3.12)的Lib目录下,复制distutils文件夹到嵌入式Python的Lib目录中,确保版本完全匹配。

内容的提问来源于stack exchange,提问作者Jo Omer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 16:29:59