[問題]用Visual Studio編譯時產生的ValueError

看板Python作者 (Kagi)時間12年前 (2013/06/27 10:14), 編輯推噓4(406)
留言10則, 5人參與, 最新討論串1/2 (看更多)
各位好,新人發問,冒犯之處請見諒。 我最近正再研究如何以python啟動JVM並執行.class檔,而我所找到的解法是 Pyjnius(http://pyjnius.readthedocs.org/en/latest/),於是我便開始安裝。 在他的文件中有提到,需要先安裝JDK以及Cython。JDK使用的是JDK7u5。 但是在安裝Cython時出現了問題。 首先是無法安裝。安裝時出現了Unable to find vcvarsall.bat。 我自己拜google的結果提到了兩種解法:安裝 MinGW 與安裝 VS 2008 Express。 MinGW已確認是最新版,而2008的官方連結已被移除,所以我裝了2012。 但是問題仍沒有解決。 後來我在這位的blog找到了原因與解法: http://blog.csdn.net/xueyunf/article/details/8924312 "它是在註冊表中尋找到 vs 的目錄,再去在 vs 目錄下找 vcvarsall.bat。 但是問題就出在 python 裡面默認是 vc9.0 也就是 vs2008 所以它在註冊表裡面找不到鍵值" 於是我開始著手修改 msvc9compiler.py (C:/Python32/Lib/distutils 目錄下) 將原本的 vc_env = query_vcvarsall(VERSION, plat_spec) 修改為 vc_env = query_vcvarsall(11.0, plat_spec) #VS2012 = VC11.0 如此一來Cython終於安裝成功了。 但是在試驗時又發生問題。 我依照 Cython的文件試作了一個.pyx,它應該要被編譯成可以被import的.so。 但出現了 ValueError: [u'path', u'include', u'lib'] 我再次google的結果,發現了http://bugs.python.org/issue7511, 我依照他提供的msvccompiler9_27.diff 修改了我的msvc9compiler.py, 而問題還是沒解決。 錯誤是NameError: name 'KEY_BASE' is not defined 我已經依照註解內的敘述更新環境變數了,但這個問題依然存在,困擾了我四天。 想請問有沒有人有相同的問題? 或是能提供一些方向? 最後貼上最後一次的全部的錯誤訊息。 d:\Python_Emample\Cython\helloworld>python setup.py build_ext --inplace Traceback (most recent call last): File "setup.py", line 3, in <module> from Cython.Distutils import build_ext File "C:\Python27\lib\site-packages\Cython\Distutils\__init__.py", line 1, in <module> from Cython.Distutils.build_ext import build_ext File "C:\Python27\lib\site-packages\Cython\Distutils\build_ext.py", line 19, in <module> from distutils.command import build_ext as _build_ext File "C:\Python27\lib\distutils\command\build_ext.py", line 23, in <module> from distutils.msvccompiler import get_build_version File "C:\Python27\lib\distutils\msvccompiler.py", line 657, in <module> from distutils.msvc9compiler import MSVCCompiler File "C:\Python27\lib\distutils\msvc9compiler.py", line 69, in <module> r"v%sA" NameError: name 'KEY_BASE' is not defined -- 傑米,炸掉它吧。 ⊙─ ─⊙▂⊙ 碰到問題,用C4就對了! █◤ Adam Savage Jamie Hyneman MYTHBUSTERS by dajidali -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.172.117.97

06/27 10:49, , 1F
我沒那麼複雜,就是先寫好bat or sh確定可執行java
06/27 10:49, 1F

06/27 10:51, , 2F
然後透過os去執行該bat/sh而已,在處理一下console輸出結果
06/27 10:51, 2F

06/27 10:51, , 3F
我每天都是這樣跑寫好的java
06/27 10:51, 3F

06/27 21:03, , 4F
謝謝回應,但這不是我問的問題......
06/27 21:03, 4F

06/28 09:18, , 5F
那跟jython有啥不同阿?
06/28 09:18, 5F

06/28 10:07, , 6F
先試一下 Jython, it is easier
06/28 10:07, 6F

06/28 15:38, , 7F
一樓的確回答你了啊 不然你要做什麼@@
06/28 15:38, 7F
to ming1053:您說的是,我也認為能夠實現python/java協作的方法不只有一種, 因此我的問題才會是「以VS編譯時產生的錯誤解決法」,而不是「要怎麼用python執行java」 另外也感謝上面兩位,我接下來會嘗試改用jython。 ※ 編輯: KagiJhou 來自: 61.227.253.119 (06/28 18:03)

06/28 19:15, , 8F
Pyjnius 是讓你可以在 CPython 下呼叫 java 的函數庫。
06/28 19:15, 8F

06/28 19:16, , 9F
而 jython 是跑在 jvm 上的 python interrupter。
06/28 19:16, 9F

07/01 07:48, , 10F
不過 PyJinus 很帥呢!
07/01 07:48, 10F
文章代碼(AID): #1How02BT (Python)
文章代碼(AID): #1How02BT (Python)