2008-09-10 56 views

回答

15

如果找到你需要編寫唯一代碼的環境中,使用蟒蛇

import mymodule_jython as mymodule 

import mymodule_cpython as mymodule 

有這個東西在一個簡單的模塊(「」 module_importer'?),寫你這樣的代碼:

from module_importer import mymodule 

這樣,您只需要在每個平臺上改變module_importer.py即可。

+1

So Daren,有沒有辦法讓module_importer根據一些環境變量動態地導入正確的變量等。 – minty 2008-09-10 07:12:44

+1

對不起,我在這裏畫一個空白。這將是一個優秀的SO問題:「如何動態地確定我們是否正在運行Jython,CPython或IronPython?」。然後,你可以在ifs中做... – 2008-09-10 11:42:39

10

@Daren Thomas:我同意,但您應該使用platform module來確定您正在運行哪個解釋器。

2

我爲CPython和IronPython編寫代碼,但提示也應該適用於Jython。

基本上,我將所有平臺特定的代碼寫入單獨的模塊/包中,然後根據我運行的平臺導入相應的代碼。 (請參閱上面的cdleary的註釋)

這對於SQLite實現與實現任何GUI代碼之間的差異時尤爲重要。

1

#1事情IMO:專注於線程安全。 CPython的GIL使編寫線程安全代碼變得簡單,因爲一次只有一個線程可以訪問解釋器。 IronPython和Jython雖然有點不太好用。

0

有兩種主要問題在這裏打球......

首先,據我所知,只有CPython的有RAII - 你必須在Jython,Ironpython等中關閉自己的資源。

第二,如前所述,線程安全。

相關問題