zoukankan      html  css  js  c++  java
  • 谈python3的封装

    这章给大家介绍,如何封装一个简单的python库

    首先创建一个以下型式的文件结构

    rootFile/
      setup.py
      example_package/
    __init__.py
    example_module.py
    example_package2/
      __init__.py
    example_module.py 

    其中的两个__init__.py可以是一个空文件,但是它是导入package所必需的文件,用来,所以请务必创建,__init__.py中可以编写Python代码,但是不建议这么做,因为实际的逻辑可以在模块中实现,__init__.py应尽量轻

    输入在你的python文件中分别添加以下内容

    #  rootFile/example_package/example_module.py:
    class module_class:
        def __init__(self):
            pass
        def print_hello():
            print('This is my first module')
    myName = 'jobsofferings'
    def printMyName():
    print(myName)
    # rootFile/example_package/example_package2/example_module.py:
    class module_class:
        def __init__(self):
            pass
        def print_hello():
            print('This is my second module')
    myName = 'jobsofferings'
    def printMyName():
    print(myName)
    # setup.py:
    import setuptools
    setuptools.setup(
        name="rootFile",
        version="0.0.1",
        author="jobsofferings",
        author_email="youremail@xxx.com",
        description="example package",
        packages=['example_package','example_package.example_package2'],
    )

    name是程序包的名称。该名称可以是任何名称,只要仅包含字母、数字、 _ 和 - 。若您想将此程序包上传至pypi.org,请务必使用您的用户名进行更新,因为这样可以确保您不会尝试上传与上传软件包时已经存在的软件包名称相同的软件包。

    version是软件包的版本。

    author和author_email用于标识软件包的作者,分别用来标明作者名称与邮箱。

    description是该软件包的简短描述。

    long_description是程序包的详细说明。这在Python软件包索引的软件包详细信息软件包中显示。在这种情况下,通常的模式是从README.md加载详细描述。

    long_description_content_type告诉索引用于长描述的标记类型,在此情况下,它是Markdown语言

    packages是应该包含在分发软件包中的所有Python导入软件包的列表。无需手动列出每个程序包,我们可以使用find_packages()自动发现所有程序包和子程序包。以上示例我们使用了手动列出的方式。

    classifiers为您的软件包提供额外信息。

    这时候,我们就可以着手将我们的package打包了

    进入管理员环境下的命令行工具中,进入rootFile文件夹位置,可以复制下这个文件地址,cd进入。执行:

    Python setup.py install

    若命令行中打印出的信息显示无误,则您的package已经打包完成,我们在同一磁盘的其他文件夹中创建一个test.py进行测试

    # test.py:
    import example_package.example_module as module1
    import example_package.example_package2.example_module as module2
     
    module1.module_class.print_hello()
    module1.printMyName()
    print(module1.myName)
    
    module2.module_class.print_hello()
    module2.printMyName()
    print(module2.myName)

    运行test.py

    输出:

    >>> This is my first module
    >>> jobsofferings
    >>> jobsofferings
    >>> This is my second module
    >>> jobsofferings
    >>> jobsofferings

    则说明您的package已经打包完成,由于通过包管理工具setuptools发布,您可以在您的python安装目录下找到这个打包文件,后缀为.egg,但egg包不一定是扩展名是egg的,其实在linux里面是不区分扩展名的。在理想情况中,egg 是一个使用zip 压缩的文件,类似于java中的jar包,其中包括了所有需要的包文件。

    您也可以在rootFile下找到这个egg文件,但事实上将dist文件夹删掉之后,还是可以使用这个package,因为import导入的搜索路径为程序主目录、PYTHONPATH目录、标准链接库目录、.pth文件目录,所以程序会到您的python安装目录下找到这个打包文件。

    进入命令行工具中,输入where python可以找到您的python安装路径,进入./Lib/site-packages,在这个文件夹中就可以看到您的打包文件。

  • 相关阅读:
    第十一节(项目实战1-高大上动态效果)
    第十节(jQuery
    第九节(jQuery的遍历、祖先、后代、同胞、过滤)
    第八节(jQuery的获取、设置、添加、删除、css()、尺寸)
    第七节(隐藏、显示、切换,滑动,淡入淡出,以及动画)
    第六节(JQuery简介、安装、语法、选择器、事件)
    第五节(HTML DOM (文档对象模型)事件、节点)
    [转]JAVA布局模式:GridBagConstraints终极技巧
    [转]java gridbag 说明
    判断两组数据是否有重复
  • 原文地址:https://www.cnblogs.com/JobsOfferings/p/jobsofferings_p3_module.html
Copyright © 2011-2022 走看看