Windows11使用Cpython 编译文件报错 error: Unable to find vcvarsall.bat 完美解决方法

作者:清虞 时间:2021-03-14 19:03:19 

开发环境说明:

  • python 3.6.2

  • Vs studio 2017 (已经安装C++桌面开发)

Windows11使用Cpython 编译文件报错 error: Unable to find vcvarsall.bat 完美解决方法

我的vcvarsall.bat 路径为:

"D:\vsstudio\VC\Auxiliary\Build\vcvarsall.bat"

一般在Vs studio 的此安装路径下

Windows11使用Cpython 编译文件报错 error: Unable to find vcvarsall.bat 完美解决方法

修改python源代码

修改文件为 python3.6.2\Lib\distutils\_msvccompiler.py 注意 前面存在下划线:

我的文件路径为:

"D:\core_package\python3.6.2\Lib\distutils\_msvccompiler.py"

Windows11使用Cpython 编译文件报错 error: Unable to find vcvarsall.bat 完美解决方法

接下来 使用记事本打开:

  • 将_find_vcvarsall 函数修改:

  • 源代码:

def _find_vcvarsall(plat_spec):
   try:
       key = winreg.OpenKeyEx(
           winreg.HKEY_LOCAL_MACHINE,
           r"Software\Microsoft\VisualStudio\SxS\VC7",
           access=winreg.KEY_READ | winreg.KEY_WOW64_32KEY
       )
   except OSError:
       log.debug("Visual C++ is not registered")
       return None, None
   with key:
       best_version = 0
       best_dir = None
       for i in count():
           try:
               v, vc_dir, vt = winreg.EnumValue(key, i)
           except OSError:
               break
           if v and vt == winreg.REG_SZ and os.path.isdir(vc_dir):
               try:
                   version = int(float(v))
               except (ValueError, TypeError):
                   continue
               if version >= 14 and version > best_version:
                   best_version, best_dir = version, vc_dir
       if not best_version:
           log.debug("No suitable Visual C++ version found")
           return None, None
       vcvarsall = os.path.join(best_dir, "vcvarsall.bat")
       if not os.path.isfile(vcvarsall):
           log.debug("%s cannot be found", vcvarsall)
           return None, None
       vcruntime = None
       vcruntime_spec = _VCVARS_PLAT_TO_VCRUNTIME_REDIST.get(plat_spec)
       if vcruntime_spec:
           vcruntime = os.path.join(best_dir,
               vcruntime_spec.format(best_version))
           if not os.path.isfile(vcruntime):
               log.debug("%s cannot be found", vcruntime)
               vcruntime = None
       return vcvarsall, vcruntime

修改为:

def _find_vcvarsall(plat_spec):
   best_dir = r"D:\vsstudio\VC\Auxiliary\Build"
   best_version = 17
   vcruntime = None
   vcruntime_spec = _VCVARS_PLAT_TO_VCRUNTIME_REDIST.get(plat_spec)
   if vcruntime_spec:
       vcruntime = os.path.join(best_dir,
                                vcruntime_spec.format(best_version))
       if not os.path.isfile(vcruntime):
           log.debug("%s cannot be found", vcruntime)
           vcruntime = None
   print(vcruntime)
   return r"D:\vsstudio\VC\Auxiliary\Build\vcvarsall.bat", vcruntime

要修改的 如下图所示:

Windows11使用Cpython 编译文件报错 error: Unable to find vcvarsall.bat 完美解决方法

如果跟我配置一样的话 到指定目录终端下

就可以输入

python setup.py build_ext --inplace

完成 PYTHON 到 c 的文件编译啦

成功截图 如下所示:

Windows11使用Cpython 编译文件报错 error: Unable to find vcvarsall.bat 完美解决方法

注意 编译完成后要使用时 需要将 .pyx文件 .c文件 .py文件全部删除 只保留 pyd文件

在其他文件调用时 不用担心报错 可以正常运行

Windows11使用Cpython 编译文件报错 error: Unable to find vcvarsall.bat 完美解决方法

输出结果如下所示

Windows11使用Cpython 编译文件报错 error: Unable to find vcvarsall.bat 完美解决方法

来源:https://blog.csdn.net/qq_43647590/article/details/130618279

标签:Cpython,编译文件,报错
0
投稿

猜你喜欢

  • vue一步到位的实现动态路由

    2024-05-21 10:16:05
  • 解密CSS Sprites:技巧、工具和教程

    2011-01-11 19:38:00
  • PL/SQL中编写Oracle数据库分页的存储过程

    2024-01-16 08:50:24
  • python使用PIL模块获取图片像素点的方法

    2022-07-28 10:57:57
  • 微信小程序使用自定义组件导航实现当前页面高亮

    2024-04-22 12:50:16
  • Python爬虫之网页图片抓取的方法

    2021-12-19 00:47:20
  • Python中用max()方法求最大值的介绍

    2021-12-08 09:33:06
  • python检查字符串是否是正确ISBN的方法

    2022-05-10 14:54:01
  • mysql全文搜索 sql命令的写法

    2024-01-25 04:45:38
  • django 数据库 get_or_create函数返回值是tuple的问题

    2024-01-27 09:47:22
  • 详解Python OpenCV图像分割算法的实现

    2022-11-28 13:15:44
  • yolov5中train.py代码注释详解与使用教程

    2022-12-04 00:55:03
  • 原生js+ajax分页组件

    2024-05-21 10:12:06
  • XMLHttpRequest Level 2 使用指南

    2024-04-18 10:49:50
  • Golang中omitempty关键字的具体实现

    2024-04-25 15:12:55
  • Recipe: 把SQL数据库部署到远程主机环境(第一部分)

    2007-09-23 13:07:00
  • MYSQL Binlog恢复误删数据库详解

    2024-01-27 06:17:30
  • Python获取网页上图片下载地址的方法

    2021-01-22 13:15:26
  • 详解pytest实现mark标记功能详细介绍

    2022-01-16 23:59:48
  • python使用beautifulsoup从爱奇艺网抓取视频播放

    2021-07-29 01:10:42
  • asp之家 网络编程 m.aspxhome.com