Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何有条件地从python安装程序中排除源文件_Python_Python 3.x_Setup.py - Fatal编程技术网

如何有条件地从python安装程序中排除源文件

如何有条件地从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+代码块封装在一个三引号字符串中,对其进行求值,并捕获编译错误,但这会使维护变得更加困难,因此我希

我的2.x/3.x python模块在使用3.3之前的python版本进行安装时显示安装异常

有些文件使用Python3.3中引入的
yield语法,setup.py尝试在安装时编译所有内容,导致语法错误,并在3.3之前的版本下显示堆栈跟踪

3.3+代码被隔离在自己的文件中并有条件地导入,因此编译错误对任何版本下模块的运行时使用都没有影响,但它在安装时会显示难看的错误消息,如上所述


我可以将每个3.3+代码块封装在一个三引号字符串中,对其进行求值,并捕获编译错误,但这会使维护变得更加困难,因此我希望有一个更优雅的解决方案。

您使用虚拟环境吗?使用virtualenv,您可以使用pip安装库的正确版本,具体取决于解释器的版本。这需要生成多个版本的库,供pip选择。我试图避免这种多版本的情况。Armin Ronacher写了一篇关于如何用相同的源代码支持2.7和3.x的文章。我用这些技巧写作。对于其他应用程序,我发现了一些有用的功能,但我认为最好避免使用它。至于“屈服于”,有一个答案。