16

尝试同时针对其中两个环境,我可以肯定地说,如果您必须使用数据库等,您最终必须为该环境编写独特的代码。你有一个很好的方法来处理这种情况吗?

4

6 回答 6

15

如果您确实发现需要为环境编写独特的代码,请使用 pythons

import mymodule_jython as mymodule

import mymodule_cpython as mymodule

将这些东西放在一个简单的模块中(''module_importer''?)并编写如下代码:

from module_importer import mymodule

这样,您需要做的就是module_importer.py根据平台进行更改。

于 2008-09-10T07:07:59.310 回答
10

@Daren Thomas:我同意,但是您应该使用平台模块来确定您正在运行的解释器。

于 2008-09-10T21:00:04.177 回答
2

我为 CPython 和 IronPython 编写代码,但tip 也适用于 Jython。

基本上,我将所有特定于平台的代码编写在单独的模块/包中,然后根据我正在运行的平台导入适当的代码。(见上面cdleary的评论)

当涉及到 SQLite 实现之间的差异以及您正在实现任何 GUI 代码时,这一点尤其重要。

于 2008-10-13T22:33:17.953 回答
1

IMO 的第一件事: 关注线程安全。CPython 的 GIL 使编写线程安全代码变得容易,因为一次只有一个线程可以访问解释器。IronPython 和 Jython 的手感稍差一些。

于 2008-12-05T03:35:43.907 回答
0

I'm pretty sure you already know this but unfortunately Jython can't load c extension modules.

于 2008-12-05T03:41:37.450 回答
0

There are two major issues at play here...

Firstly, to my knowledge, only CPython has RAII - you have to close your own resources in Jython, Ironpython, etc.

And Secondly, as has been mentioned, is thread safety.

于 2009-03-12T06:11:27.827 回答