使用PyPi时,在Python 3代码库中支持Python 2的好方法是什么?

Jel*_*teF 7 python pypi python-2.7 python-3.x

我在Python 3中编写了一个库,最近出现了一个拉取请求,增加了对Python 2.7的支持.拉请求是这样的:https://github.com/JelteF/PyLaTeX/pull/9.

它基本上做的是添加一些import修复并使超级调用显式.我对此有不同的感受,因为我为python 3选择的一个重要原因是更清晰的语法,这使得它通过使用'丑陋'语法来兼容.但是,我确实喜欢使用Python 2的人也可以使用该库.

这就是我为python2和python3考虑单独代码库的原因.有没有办法设置PyPi,以便它使用不同版本的Python单独的代码库?使用单独的分支将是更可取的,因为在这种情况下合并新的更改将是容易的.

或者我有一些更好的选择吗?

Jel*_*teF 0

我也刚刚发布了 Python 2.7 的库。我的方法是使用3to2将 Python 3 代码编译为 2.7 代码,然后将其上传到 PyPi。

mkdir -p python2_source
cp -R pylatex tests examples python2_source
3to2 python2_source -wn -f collections -f all
Run Code Online (Sandbox Code Playgroud)

您还必须添加python2_sourceMANIFEST.in,因此它将出现在您的分发文件中。如果使用 Python 2.7 完成设置,那么我会setup.py从文件夹中安装一小段代码。python2_source

if sys.version_info[0] == 3:
    source_dir = '.'
else:
    source_dir = 'python2_source'
Run Code Online (Sandbox Code Playgroud)

然后package_dir={'': source_dir}在实际setup调用中。