python打包成dist包

Python018

python打包成dist包,第1张

使用python内部基础工具包Distutils打包程序:

在打包之前需要做的就是配置好安装脚本,一般为setup.py文件

示例(setup.py):

from distutils.core import setup

setup(name='Hello',

 version='1.0',

 description='example',

 author='haomiao',

 py_modules=['hello'])

该配置文件,只使用了py_modules参数,单一的模块文件名hello.py,当然还有其他的属性、选项可设置hello.py应与setup.py在同一目录下,分发的时候最好将该目录作为单独的一个目录文件,并将其所依赖的或需要的文件、资源均放在这个目录下或其子目录下,该目录就可以分发给其他开发人员或客户(一般的最终客户不会做这些安装的繁琐事情)

此外,若有其他的资源文件或是其他的多个py文件,则可以增加packages等其他相关的参数指令。

将该目录模块安装到python中;执行:python setup.py install ,此后将会复制相关文件至python安装路径下的Lib/site-packages下,

如上示例将会在该路径下产生:hello.py hello.pyc Hell-1.0-pyx.x.egg-info文件;在使用的时候直接:import hello即可使用。

在上述情况的基础上打包,再使用sdist命令(用于源码发布的形式)

执行:python setup.py sdist ,将产生两个目录build、dist以及MANIFEST列表文件,build下为中间文件可不用,dist下会打包成一个压缩文件,如:Hello-1.0.zip;事实上,该压缩文件内部包含之前的文件以及PKG-INFO的描述文件,这个时候该压缩文件就可以分发给用户;

如下;

py如果没有Qt \\ bin,您可以复制本文件Qt网站。如果找不到现有PyQt5插件目录的错误出现在包装过程中,然后,1)找到PyQt5文件夹\/图书馆\/插件路径下蟒蛇目录下安装,并复制内容2)按照下面的错误报告一个句子,例如,如下:路径检查:_build \/图书馆\/插件的内部去C驱动和创建它们。最后,将刚才复制的复制进去,然后再做一次,包成功。特别注意:如果你发现你可以在你的电脑打开它的包装完成后,但你不能打开它在别人的电脑,错误报告如下:xxx未能执行脚本。在这个时候,我们需要替换上面的命令在步骤4 w c,然后删除所有的东西都打包和重新包装。c程序可以打开终端窗口cmd的形式,这样操作失败时,将一个特定的错误报告,具体的错误将被修改。

什么是pypi

简单的说pypi是一个python包的仓库,里面有很多别人写好的python库,你可以通过easy_install或者pip进行安装,方便用户更方面的使用你的代码模块。

将代码打包并上传到pypi上,大体上分为以下几步:

1、整理代码的目录结构,方便打包和python的import,为了方便引用,需要将代码模块变成一个包,所以需要将功能代码用目录来整合方便引用,并且需要创建__init__文件,__init__中可以没有内容,也可以在__init__文件中进行import(from .extractor import Document)操作,以减少整体模块引用时import的层数,避免错误。

[html] view plain copy

├── ./tidypage  

│   ├── ./tidypage/cleaners.py  

│   ├── ./tidypage/extractor.py  

│   ├── ./tidypage/__init__.py  

│   └── ./tidypage/titles.py

2、功能模块的目录整理好后,就可以开始整理和添加发布到pypi上所使用的文件了

tidy_page  

├── LICENSE  

├── README.rst  

├── requirements.txt  

├── setup.py  

├──tidypage  

│   ├──cleaners.py  

│   ├──extractor.py  

│   ├──__init__.py  

│   └──titles.py

就是将原来的目录深移一层,文件夹名称可以根据自己意愿。然后在到第一层的目录下创建些特殊文件,具体你可以看看下面这个文件结构你就明白了

LICENSE文件是授权文件,比如:MIT license, APACHE license

README.rst 文件想必大家都不陌生,其实就是项目介绍和使用说明

setup文件才是重点,是python模块安装所需要的文件,它的格式如下:

#!/usr/bin/env python  

from __future__ import print_function  

from setuptools import setup, find_packages  

import sys  

  

setup(  

    name="tidy-page",  

    version="0.1.1",  

    author="Desion Wang",  

    author_email="[email protected]",  

    description="html text parser,get the content form html page",  

    long_description=open("README.rst").read(),  

    license="MIT",  

    url="https://github.com/desion/tidy_page",  

    packages=['tidypage'],  

    install_requires=[  

        "beautifulsoup4",  

        lxml_requirement  

        ],  

    classifiers=[  

        "Environment :: Web Environment",  

        "Intended Audience :: Developers",  

        "Operating System :: OS Independent",  

        "Topic :: Text Processing :: Indexing",  

        "Topic :: Utilities",  

        "Topic :: Internet",  

        "Topic :: Software Development :: Libraries :: Python Modules",  

        "Programming Language :: Python",  

        "Programming Language :: Python :: 2",  

        "Programming Language :: Python :: 2.6",  

        "Programming Language :: Python :: 2.7",  

    ],  

) NAME 名字,一般放你包的名字即可PACKAGES 包含的包,可以多个,这是一个列表DESCRIPTION 关于这个包的描述LONG_DESCRIPTION 参见read方法说明KEYWORDS 关于当前包的一些关键字,方便PyPI进行分类。AUTHOR 谁是这个包的作者,写谁的名字吧AUTHOR_EMAIL 作者的邮件地址URL 你这个包的项目地址,如果有,给一个吧,没有你直接填写在PyPI你这个包的地址也是可以的VERSION 当前包的版本,这个按你自己需要的版本控制方式来LICENSE 授权方式INSTALL_REQUIRES 模块所依赖的python模块

文中的classifiers的内容并不是随便填写的,你需要参照本文参考文档中的PyPI Classifiers来写

3、开始使用Distutils进行打包

为了保证效果,在打包之前我们可以验证setup.py的正确性,执行下面的代码

python setup.py check

输出一般是running check如果有错误或者警告,就会在此之后显示没有任何显示表示Distutils认可你这个setup.py文件。

如果没有问题,那么就可以正式打包,执行下面的代码:

python setup.py sdist

执行完成后,会在顶层目录下生成dist目录和egg目录

tidy_page  

├── tidy_page/dist  

│   ├── tidy_page/dist/tidy-page-0.1.0.tar.gz  

│   └── tidy_page/dist/tidy-page-0.1.1.tar.gz  

├── tidy_page/LICENSE  

├── tidy_page/README.rst  

├── tidy_page/setup.py  

├── tidy_page/tidypage  

│   ├── tidy_page/tidypage/cleaners.py  

│   ├── tidy_page/tidypage/extractor.py  

│   ├── tidy_page/tidypage/__init__.py  

│   └── tidy_page/tidypage/titles.py  

├── tidy_page/tidy_page.egg-info  

│   ├── tidy_page/tidy_page.egg-info/dependency_links.txt  

│   ├── tidy_page/tidy_page.egg-info/PKG-INFO  

│   ├── tidy_page/tidy_page.egg-info/requires.txt  

│   ├── tidy_page/tidy_page.egg-info/SOURCES.txt  

│   └── tidy_page/tidy_page.egg-info/top_level.txt

4、打包完成后就可以准备将打包好的模块上传到pypi了,首先你需要在pypi上进行注册 goto PyPI Live

注册完成后,你需要在本地创建好pypi的配置文件,不然有可能会出现使用http无法上传到pypi的问题

Create a .pypirc configuration file,在用户的home目录下创建.pypirc文件,文件的内容如下

[distutils]index-servers =  pypi[pypi]repository=https://pypi.python.org/pypiusername=your_usernamepassword=your_passwor chmod 600 ~/.pypirc

python setup.py register -r pypi

在pypi上注册模块

python setup.py sdist upload -r pypi

上传python文件包,没有问题你就可以在pypi上看到你上传的包了并且可以使用pip搜索和install你的python包了