看板 Python 關於我們 聯絡資訊
各位好,新人發問,冒犯之處請見諒。 我最近正再研究如何以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
swpoker:我沒那麼複雜,就是先寫好bat or sh確定可執行java 06/27 10:49
swpoker:然後透過os去執行該bat/sh而已,在處理一下console輸出結果 06/27 10:51
swpoker:我每天都是這樣跑寫好的java 06/27 10:51
KagiJhou:謝謝回應,但這不是我問的問題...... 06/27 21:03
swpoker:那跟jython有啥不同阿? 06/28 09:18
timTan:先試一下 Jython, it is easier 06/28 10:07
ming1053:一樓的確回答你了啊 不然你要做什麼@@ 06/28 15:38
to ming1053:您說的是,我也認為能夠實現python/java協作的方法不只有一種, 因此我的問題才會是「以VS編譯時產生的錯誤解決法」,而不是「要怎麼用python執行java」 另外也感謝上面兩位,我接下來會嘗試改用jython。 ※ 編輯: KagiJhou 來自: 61.227.253.119 (06/28 18:03)
ya790206:Pyjnius 是讓你可以在 CPython 下呼叫 java 的函數庫。 06/28 19:15
ya790206:而 jython 是跑在 jvm 上的 python interrupter。 06/28 19:16
timTan:不過 PyJinus 很帥呢! 07/01 07:48