zoukankan      html  css  js  c++  java
  • 【Python实战02】共享Python代码到PyPI社区

    之前学习了Python的列表,以及编写了一个函数来进行列表的输出,这次我们就继续来学习如何把我们已经编写好的代码共享到PyPI社区,这里以上篇文章中编写的print_lol函数为例。


    函数转换为模块

    为了进行print_lol函数的共享,我们首先要把此函数封装到一个模块中去,所谓的模块,其实就是一个以.py结尾的文件,这里我们把上一篇文章中的print_lol函数放到一个wukong.py文件中(这个文件我放置到了D:python文件夹中),下面是wukong.py文件的内容:
    def print_lol(movies):
    	for item_1 in movies:
    		if isinstance(item_1,list):
    			print_lol(item_1)
    		else:
    			print(item_1)
    当然我们也可以给这个函数增加一些注释,以便于清楚的知道这个函数的功能,在Python中注释使用三个"来表示,如下:
    """这里是wukong模块,print_lol函数专门用来输出一个列表"""
    def print_lol(movies):
    	for item_1 in movies:
    		if isinstance(item_1,list):
    			print_lol(item_1)
    		else:
    			print(item_1)
    然后我们可以在python的IDLE中按下F5来重新启动Python Shell,这是就是加载当前我们定义的这个模块,我们直接可以使用这个模块进行列表的打印,如下:
    >>> ================================ RESTART ================================
    >>> 
    >>> movies = ["The Holy Grail",1975,"Terry Jones & Terry Gilliam",91,
                        ["Graham chapman",["Michael Palin","John cleese","Terry Gilliam","Eric Idle & Terry Jones"]],
             "The Life of Brain",1979,"Terry Jones",94,
    	            ["Graham chapman",["Michael Palin","John cleese","Terry Gilliam","Eric Idle & Terry Jones"]]]
    >>> print_lol(movies)
    The Holy Grail
    1975
    Terry Jones & Terry Gilliam
    91
    Graham chapman
    Michael Palin
    John cleese
    Terry Gilliam
    Eric Idle & Terry Jones
    The Life of Brain
    1979
    Terry Jones
    94
    Graham chapman
    Michael Palin
    John cleese
    Terry Gilliam
    Eric Idle & Terry Jones
    >>> 
    这里我们能看到RESTART的字样,说明Python Shell已经重新启动了,这样也说明我们的模块也已经加载了,所以在之后的movies打印之前我们并没有定义print_lol函数,而可以直接使用了。

    准备发布

    现在我们可以进行准备将当前的wukong.py发布到PyPI上了,但是现在我们要做一下的几个工作:
    1、把wukong.py放入到一个文件夹中,这里我放置到了D:pythonwukong文件夹中
    2、在新文件夹中创建一个名为setup.py的文件,即在D:pythonwukong文件夹中创建一个setup.py文件,这个文件用来存储有关发布的数据信息,内容如下:
    """从python发布工具导入setup函数"""
    from distutils.core import setup
    """设置setup函数的参数,其中py_modules为我们将要发布的模块,这里为wukong.py,所以值为wukong"""
    setup(
        name           = 'wukong',
        version        = '1.0.0',
        py_modules     = ['wukong'],
        author         = 'wukongcode',
        author_email   = 'bjwangzhen@pku.edu.cn',
        url            = 'http://blog.csdn.net/wukongcode',
        description    = 'A simple printer of nested lists',
        )
    3、构建一个发布文件,在D:pythonwukong文件夹下打开一个终端,这里为DOS,键入一行命令:python setup.py sdist,前提是我们要配置好python的环境变量,如下:

    然后打开DOS,进行输入语句:


    4、将发布安装到你的Python本地副本中,在终端输入命令:python setup.py install,如下:


    这时我们把模块发布到本地的库中了,所以我们也可以在shell导入这个本地库并使用的,如下:
    >>> import wukong
    >>> names = ['zhangsan','lisi','wangwu']
    >>> print_lol(names)
    Traceback (most recent call last):
      File "<pyshell#2>", line 1, in <module>
        print_lol(names)
    NameError: name 'print_lol' is not defined
    >>>
    我们使用import wukong将我们的模块导入到其中了,但是在使用时却报错了。说没有找到print_lol,这是因为在Python有一个命名空间的概念,默认情况下是在__main__的命名空间中,而我们的代码在wukong命名空间中,所以我们这里要指定对应的命名空间,如下:
    >>> import wukong
    >>> names = ['zhangsan','lisi','wangwu']
    >>> wukong.print_lol(names)
    zhangsan
    lisi
    wangwu
    >>> 
    这里我们通过wukong.print_lol来调用此方法。
    到这里我们就准备好了发布模块,如果我们想要将自己的模块发布到PyPI上的话,我们还需要到PyPI上注册账号

    注册PyPI网站

    要发布我们的模块,我们首先要到PyPI网站( 点击打开链接)注册我们自己的账号:

    填写完以上的信息以后,PyPI网站就会给我们发送一封邮件,里面有确认连接,我们直接点击,进行确认注册即可。

    向PyPI上上传代码

    首先我们要在DOS中填写下我们在PyPI上注册的信息,这个在本机上只需执行一次。如下:

    注册自己的信息以后,我们就可以上传自己的代码了。如下:



    好了,我们已经成功的上传我们自己的代码到PyPI上了,这样别人就可以下载和使用我们的模块了。
  • 相关阅读:
    思考问题的方式
    领域模型驱动设计读书笔记
    Oracle树形表和递归查询
    java中List , Set , Array相互转换
    JAVA两个数组间元素的比较(找出相同或者不同元素)
    java中的过滤器写法
    打印功能--调整表头
    @WebFilter注解
    深入理解JVM-内存模型(jmm)和GC
    vue生命周期函数
  • 原文地址:https://www.cnblogs.com/fuhaots2009/p/3503148.html
Copyright © 2011-2022 走看看