如何编写同时适用于CPython、Jython和IronPython的Python代码策略
我尝试过同时针对这两种环境,发现如果你需要使用数据库之类的东西,最终你就得为每个环境写不同的代码。你有没有什么好的方法来处理这种情况?
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
文件就可以了。