我有一个Python模块,我想上传到PyPI。到目前为止,它是为Python2.x工作的,现在为3.x编写一个版本应该不难。在
但是,在遵循了在这些地方制作模块的指南之后:
我不清楚如何为Python的不同版本支持多个源代码发行版,也不清楚PyPI是否/如何支持它。我设想我会有单独的代码:
- 2.x
- 2.6(可能,作为使用新缓冲区API的特殊情况)
- 3.x
如何在PyPI中设置Python模块,以便有人能够:
easy_install modulename
无论用户使用的是2.x还是3.x,它都会安装正确的东西?在
Tags:
最简单的解决方案是使用单个源分发。在
我发现^{} for ^{} 似乎有一种优雅的方式来支持python2.x和3.x,所以我决定复制这个方法。在
任务是为包发行版设计一个单独的
setup.py
,它与所有受支持的Python发行版一起工作。然后使用相同的setup.py
,您可以:以及
^{pr2}$应该可以使} 。这个包包含纯Python代码(python2.x和3.x的单独代码)和C扩展,分别为2.x和3.x编写
setup.py
足够简单,以便使用所有受支持的Python发行版进行解析。我已经成功地使用了一个支持2.4到2.6以及3.1的包^{要做到这一点:
1)我将python2.x代码放入
python2
子目录,python3.x代码放在python3
子目录中。在2)我把2.x和3.x的C扩展代码放在}下的
python2
和{src
目录中。在因此,目录结构是:
^{3}$3)在
setup.py
中,我在靠近顶部的位置有以下几行:4)在对
setup
的调用中,我将包指定为正常:5)我使用
package_dir
选项为Python代码指定了基目录(参见步骤3中的base_dir
):6)对于C扩展,我给出了路径:
这是关于
setup.py
的。setup.py
文件可由python2.x和3.x解析7)最后,如果您使用以下方法构建源分发:
然后,默认情况下,它将只拉入专门为该Python构建所需的文件。E、 g.在上面的例子中,您只能得到源发行版中
python2
下的文件,而不能得到python3
下的文件。但是对于完整的源代码分发,您需要同时包含2.x和3.x的文件。为此,请创建一个MANIFEST.in
文件,其中包含如下内容:要查看我做了什么,请参阅PyPI或BitBucket上的
cobs
源代码。在相关问题 更多 >
编程相关推荐