2011-05-16 113 views
0

我有(我希望的)一個非常簡單的問題。將javax包導入python

我想用一些javax.crypto中的類從python腳本中,這樣可以這樣做:

from javax.crypto import Cipher 

cipher = Cipher.getInstance('AES/CTR/NoPadding') 

但我不熟悉如何做到這一點得到蟒蛇能認識到Java包,此刻蟒蛇,當然,只是說:

ImportError: No module named javax.crypto

難道僅僅增加一些變量$ PYTHONPATH的情況下,或者這只是完全錯誤的?

非常感謝, 克里斯

+0

您可能想看看Jython(用Java實現的Python語言)。除此之外,它是迷惑你爲什麼會期望這個工作。 Java類被字節編譯成可由Java VM(虛擬機)加載和解釋的形式,而Python的最常見實現(CPython)是本機的解釋器。 – 2011-05-16 17:34:55

+1

「或者這是完全錯誤的嗎?」 ---我在考慮你的問題是以Java和本機可執行文件如何在你的系統上工作的一些基本誤解爲框架的。 – 2011-05-16 17:36:55

+0

@Jim:實際上,CPython也使用虛擬機。它通常不會像Java虛擬機通常那樣具有JITer。 – 2011-05-16 17:40:03

回答

2

這是非常完全錯誤的。 Python和Java是獨立的語言,CPython是您使用的實現,它有自己的虛擬機。如果要橋接兩者,請使用Jython

1

在jython中,您使用您描述的語法。從某些.py代碼轉換爲java時,基本類型(字符串,整數,浮點數)由jython自動轉換。如果你想要處理你自己的對象,你必須開始編寫接口包裝器。

C:\>SET PATH=C:\jython2.5.2\bin;%PATH% 

C:\>jython 
Jython 2.5.2 (Release_2_5_2:7206, Mar 2 2011, 23:12:06) 
[Java HotSpot(TM) Client VM (Sun Microsystems Inc.)] on java1.6.0_24 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from javax.crypto import Cipher 
>>> cipher = Cipher.getInstance('AES/CTR/NoPadding') 
>>> cipher 
[email protected] 
>>>