我刚刚开始一个新的Python项目,理想情况下我想从一开始就提供Python 2和3支持,只需要很少的开发开销.我的问题是,为全新项目做这件事的最佳方法是什么?
作为安装脚本的一部分,我遇到了运行2to3甚至3to2的项目.这似乎是一种非常常见的方式.但是,似乎有几种不同的方法可以做到这一点.我也遇到了Distribute.
还可以选择编写多语言Python 2/Python 3代码.即使这看起来像一个可怕的想法,我注意到我最近编写的代码更像是Python 3代码,尽管我仍然以Python 2运行它.我有一种感觉这只会帮助我自己的过渡时这一天终于到来了,并没有为提供或至少帮助双重支持做多少.
我提供的大多数提供双重支持的项目都是后期添加了Python 3的支持,所以我特别好奇是否有更好的方法更适合新项目,你可以从中获得清晰的好处.
谢谢!
我需要一个用于字典的python 3.1深度更新函数(一个递归更新父字典内的子字典的函数).
但我认为,在将来,我的函数可能必须处理行为像字典但不是字典的对象.而且我想避免使用isinstance和type(因为它们被认为是坏的,因为我几乎可以阅读每个Pythonista的博客).
但鸭子打字是Python的哲学的一部分,所以我怎么能检查对象是否像字典一样?
谢谢!
编辑:谢谢大家的答案.以防万一,我编码的函数可以在这个地方找到:http://blog.cafeaumiel.com/public/python/dict_deep_update.py
我刚刚在我的新电脑上安装了 python3 并尝试使用安装一些库(numpy,,),我得到cythoncymempip
AttributeError: module 'collections' has no attribute 'Iterable'
Run Code Online (Sandbox Code Playgroud)
但是图书馆喜欢nltk并且cytest安装得很好
python ×3
cython ×1
cythonize ×1
dictionary ×1
duck-typing ×1
numpy ×1
python-2to3 ×1
python-3.x ×1