日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

转载 python扩展问题”unable to find vcvarsall.bat“的解决

發布時間:2025/7/14 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 转载 python扩展问题”unable to find vcvarsall.bat“的解决 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文來自:http://blog.csdn.net/ren911/article/details/6448696

?3654人閱讀?評論(3)?收藏?舉報

在用C給python3.寫擴展時遇到如下問題:

寫好*module.c和setup.py文件后執行

python setup.py build

報unable to find vcvarsall.bat

我機器上有vs2005和vc6,但是還是報錯。

搜索很多資料:

網上提供解決辦法如下:

下載mingw環境,添加環境變量

使用

python setup.py build –compiler=mingw32

這個辦法感覺只是繞過了這個問題,并不是真正解決問題,而且我系統中python是用vs編譯的,擴展模塊卻用mingw-gcc編譯,感覺可能有問題。

但網上對此就缺少詳細的說明

經過對C:/Python32/Lib/distutils目錄下.py文件的仔細翻閱,發現“unable to find vcvarsall.bat”這句話出在msvc9compiler.py中

再研究這個文件發現問題所在了:

它是在注冊表中尋找到vs的目錄,再去在vs目錄下找vcvarsall.bat。

但是問題就出在python32里面默認是vc9.0也就是vs2008所以它在注冊表里面找不到鍵值返回None

productdir = Reg.get_value(r"%s/Setup/VC" % vsbase,

"productdir")

vsbase值為:Software/Microsoft/VisualStudio/9.0

具體修改代碼如下:

msvc9compiler.py中

def find_vcvarsall(version) 用于查找vcvarsall.bat version就是版本號,實際上是9.0

vc_env = query_vcvarsall(VERSION, plat_spec)

VERSION = get_build_version() 因為python32自己是由vc9.0構建的所以VERSION是9.0

修改MSVCCompiler函數:

vc_env = query_vcvarsall(VERSION, plat_spec)

為:

vc_env = query_vcvarsall(8.0, plat_spec)

不過還有這句話:

if VERSION < 8.0:

raise DistutilsPlatformError("VC %0.1f is not supported by this module" % VERSION)

看來,python3.2中的distutils只支持vc8.0以上,即vs2005以上的編譯器。

轉載于:https://www.cnblogs.com/shalang/articles/2825676.html

總結

以上是生活随笔為你收集整理的转载 python扩展问题”unable to find vcvarsall.bat“的解决的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。