如何有条件地从python安装程序中排除源文件
我的2.x/3.x python模块在使用3.3之前的python版本进行安装时显示安装异常 有些文件使用Python3.3中引入的如何有条件地从python安装程序中排除源文件,python,python-3.x,setup.py,Python,Python 3.x,Setup.py,我的2.x/3.x python模块在使用3.3之前的python版本进行安装时显示安装异常 有些文件使用Python3.3中引入的yield语法,setup.py尝试在安装时编译所有内容,导致语法错误,并在3.3之前的版本下显示堆栈跟踪 3.3+代码被隔离在自己的文件中并有条件地导入,因此编译错误对任何版本下模块的运行时使用都没有影响,但它在安装时会显示难看的错误消息,如上所述 我可以将每个3.3+代码块封装在一个三引号字符串中,对其进行求值,并捕获编译错误,但这会使维护变得更加困难,因此我希
yield语法,setup.py尝试在安装时编译所有内容,导致语法错误,并在3.3之前的版本下显示堆栈跟踪
3.3+代码被隔离在自己的文件中并有条件地导入,因此编译错误对任何版本下模块的运行时使用都没有影响,但它在安装时会显示难看的错误消息,如上所述
我可以将每个3.3+代码块封装在一个三引号字符串中,对其进行求值,并捕获编译错误,但这会使维护变得更加困难,因此我希望有一个更优雅的解决方案。您使用虚拟环境吗?使用virtualenv,您可以使用pip安装库的正确版本,具体取决于解释器的版本。这需要生成多个版本的库,供pip选择。我试图避免这种多版本的情况。Armin Ronacher写了一篇关于如何用相同的源代码支持2.7和3.x的文章。我用这些技巧写作。对于其他应用程序,我发现了一些有用的功能,但我认为最好避免使用它。至于“屈服于”,有一个答案。