Windows系统下如何构建和发布Python模块到PyPI上

最近在学习《Head First Python》时,遇到了一个有趣的知识点。即把自己的Python模块发布到PyPI上。按照书上的步骤操作后,发现存在不少错误。无奈,在各个论坛以及官方文档的帮助下,颇费了一些周折,终于含泪发布成功。这里记录下整个过程,希望也可以帮助到其他有问题的朋友。

废话不多说,这里以《Head First Python》中的例子,讲述一下构建和发布Python模块的具体步骤。

构建步骤:

1.先在桌面上创建一个名为“nester”的文件夹

2.在新文件夹中创建一个名为“nester.py”的文件

 这个文件中是我们的核心代码,编辑这个文件,添加以下代码:

"""这是"nester.py"模块,提供了一个名为print_lol()的函数,这个函
数的作用是打印列表,其中有可能包含(也可能不包含)嵌套列表"""
def print_lol(the_list):
    """这个函数取一个位置参数,名为"the_list",这可以是任何Python
列表(也可以是包含嵌套列表的列表)。所指定的列表中的每个数据项
会(递归地)输出到屏幕上,各数据项各占一行"""
    for each_item in the_list:
        if isinstance(each_item,list):
            print_lol(each_item)
        else:
            print(each_item)

3.在新文件夹中创建一个名为“setup.py”的文件​​​​​​​​​​​​​​

这个文件包含有关发布的元数据,编辑这个文件,增加以下代码:

from distutils.core import setup
setup(
      name         = 'nester',
	  version      = '1.0.0',
	  py_modules   = ['nester'],
	  author       = 'giserwang',
	  author_email = 'giserwangziheng@163.com',
	  url          = 'http://www.headfirstlabs.com',
	  description  = 'A simple printer of nested lists',
     )
  • name - 项目的名称
  • version - 项目的版本。需要注意的是,PyPI上只允许一个版本存在,如果后续代码有了任何更改,再次上传需要增加版本号
  • author和author_email - 项目作者的名字和邮件
  • url - 项目主页的URL,一般给出代码仓库的链接
  • description - 项目的简短描述

4.构建一个发布文件

按win+R打开命令行,如下图:

在C:\User\HP>后敲入cd 你的nester文件夹位置 
由于我把nester文件夹放在桌面上,所以是cd C:\User\HP\Desktop\nester,再按下回车,如图所示:

然后输入命令python setup.py sdist 按下回车

接着输入命令python setup.py install 按下回车

此时Python模块已经构建完成,接下来就是发布的问题。

发布步骤:

1.注册PyPI账户

第一次在PyPI上发布项目,需要先注册PyPI账户。

注册很简单,登录PyPI – the Python Package Index,点击右上角Register,出现下面的表单,填完提交即可。

注册完账号,我们就可以开始上传项目。

2.上传项目到PyPI

在命令行键入以下命令twine upload dist/*

接着输入用户名和密码(特别需要注意的是输入密码时命令行没有显示,只管输入即可

输入后出现错误:HTTPError: 403 Client Error: The user 'giserwang' isn't allowed to upload to project 'nester'.错误的意思是“nester”这个模块名称无法发布,这说明我们的模块命名有问题,具体的命名规则可以在https://pypi.org/help/#project-name上查看。此时需要我们修改模块的名字。我将文件夹名称修改为giserwang1111,将“nester.py”修改为“giserwang1111.py”,同时将"setup.py"文件中的nester也改为giserwang1111。

from distutils.core import setup
setup(
      name         = 'giserwang1111',
	  version      = '1.0.0',
	  py_modules   = ['giserwang1111'],
	  author       = 'giserwang',
	  author_email = 'giserwangziheng@163.com',
	  url          = 'http://www.headfirstlabs.com',
	  description  = 'A simple printer of nested lists',
     )

然后重复构建步骤第4步的命令和twine upload dist/*命令即可发布成功。

 

结果

我们打开PyPI – the Python Package Index来看看我们上传的项目。

可以看到项目成功地发布到PyPI上了。

以上就是构建和发布Python模块到PyPI的所有步骤。可以看到,步骤还是挺繁琐的。我上传的只是一个非常简单的模块,如果真正地想发布一个有用的模块,还需要添加其他的文档,具体可以参考 https://packaging.python.org/tutorials/packaging-projects/#

虽然整个创建和发布Python模块的过程有点繁琐,但是发布成功后还是蛮有成就感的。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值