關於Unable to find vcvarsall.bat


 關於Unable to find vcvarsall.bat問題解決方案:

系統:win10(64位);

python版本:3.5.2(32位)

vs版本:visual studio 2013

背景:學了python一周,做機器學習,因為要用python調用java包(HanLP),所以需要安裝JPype,官網沒找到32位的已編譯好的包,就下了源碼來編譯,結果冒出Unable to find vcvarsall.bat錯誤,費了好大一會功夫,終於解決。

解決辦法:

1、網上找了不少,有讓裝vs2008的,有讓裝MingGW的,有讓改注冊表的,都差不多試了一下,除了沒裝vs2008,都不好使

2、跑去找到Lib\distutils下的msvc9compiler.py文件,按照網上教程改了一下,教程如下:http://www.360doc.com/content/15/0414/23/12067640_463261796.shtml,發現不太對。

剛學python,不知道怎的,我的沒用到這個文件;

3、后來查了查,發現同目錄下還有個文件:_msvccompiler.py,進去看了看,功能貌似類似,就改了一下錯誤輸出提示,重新編譯安裝,發現錯誤提示發生變化,確定是此文件起作用

4、調試了一下,跟蹤代碼過程中發現_find_vcvarsall函數下,會去找注冊表來讀取c編譯器的相關路徑信息,后來不確定會發生什么事情,就硬編碼,把變量改了,如下:

  best_version = 12

  best_dir = 'C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/'

  vcruntime = 'C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/redist/x86/Microsoft.VC120.CRT/msvcr120.dll'

  第一個變量是指vs的版本,本人是Vs2013,所以定義為12,第二個變量vs安裝的路徑(本來這個路徑應該是從注冊表中讀出來,但讀的不對,不想改注冊表,就硬編碼了。),第三個變量是對應的c運行時需要的庫,不同版本vs該庫名字不一樣。

5、改完后,重新編譯安裝試了一下,成了。

瞎貓碰着死老鼠,只能憑之前的c#、java經驗去解決bug,總算裝上了,萬幸。

此外發現年紀大了很多東西記不住,還是得寫寫,省得以后遇到又一頓亂找。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM