如何编写同时适用于CPython、Jython和IronPython的Python代码策略

16 投票
6 回答
1336 浏览
提问于 2025-04-11 09:16

我尝试过同时针对这两种环境,发现如果你需要使用数据库之类的东西,最终你就得为每个环境写不同的代码。你有没有什么好的方法来处理这种情况?

6 个回答

2

我为CPython和IronPython写代码,不过这个建议对Jython也适用。

简单来说,我把所有特定于平台的代码放在不同的模块或包里,然后根据我运行的系统导入合适的那个。(可以参考cdleary上面的评论)

这在处理SQLite的不同实现时特别重要,如果你在写任何图形用户界面(GUI)的代码,更是如此。

10

@Daren Thomas:我同意你的看法,不过你应该使用platform模块来判断你正在使用哪个解释器。

15

如果你发现需要为不同的环境写独特的代码,可以使用Python的

import mymodule_jython as mymodule

import mymodule_cpython as mymodule

把这些内容放在一个简单的模块里(比如叫“module_importer”?),然后像这样写你的代码:

from module_importer import mymodule

这样的话,你只需要根据不同的平台修改一下 module_importer.py 文件就可以了。

撰写回答