1

1.什么是模块打包

  • 模块打包目的是让自己开发的功能能够实现共享,供给他人使用;
  • 包管理索引平台:Python Package Index;

2.怎么打包

  • tar.gz格式:这个就是标准压缩格式,里面包含了项目元数据和代码,可以使用Python setup.py sdist命令生成;
  • egg格式:它也是压缩文件,只是扩展名换了,里面包含了项目元数据以及源代码,这个格式由setuptools项目引入, 可以通过命令Python setup.py bdist_egg命令生成;
  • whl格式:这个是Wheel包,也是一个压缩文件,只是扩展名换了,里面包含了项目元数据和代码,还支持免安装直接运行,whl分发包内的元数据和egg包是有些不同的,可以通过命令Python setup.py bdist_wheel生成;
  • 在pycharm的site-packages中,我们安装的第三方包都会被安装在这里,这里的以.dist-info结尾的目录,就是这个库的元数据,是从分发包中备份出来的,.dist-info类型的目录来自于Wheel格式的分发包, 也有些是.egg-info类型的目录,就是Egg格式的分发包
site-packages
├── IPython
├── Jinja2-2.10.dist-info
├── MarkupSafe-1.1.0.dist-info
├── Pygments-2.2.0.dist-info
├── Send2Trash-1.5.0.dist-info
├── __pycache__
├── appnope
├── appnope-0.1.0.dist-info
├── backcall
├── backcall-0.1.0.dist-info
├── bleach
├── bleach-3.0.2.dist-info
├── certifi
├── certifi-2018.10.15.dist-info
├── chardet
├── chardet-3.0.4.dist-info

3.如何打包、打包后推送到哪里

  • 创建需要打包的模块;
package/
├── README.rst
├── etc
│   └── xkd.conf
├── first_package
│   └── __init__.py
├── second_package
│   └── __init__.py
└── setup.py
  • 填写setup.py文件内容;
from setuptools import setup, find_packages
setup(
    name='package',
    version='1.0.0',
    packages = find_packages(),
    install_requires=[
        "requests>=2.19.1",
        "PyYAML>=3.13",
    ],
    description='XKD COURSE FOR TEST',
    long_description=open("README.rst").read(),
    url='github 地址',
    author='Robby',
    author_email='yinhuanyicn@gmail.com',
    license='Apache License 2.0',
    package_data = {
        # 将 .txt和.rst文件也打包进去
        '': ['*.txt', '*.rst'],
    },
    data_files=['etc/xkd.conf',],
    keywords=['xkdpackage',],
)
  • 使用命令行将模块打包:python setup.py bdist_wheel
打包后会生成一些目录:build、dist、xkdpackage.egg-info

day37-01.png

  • 在用户的家目录下创建~/.pypirc文件,此文件中配置PyPI访问地址和账号;
  • 安装twine的命令行:pip install twine
  • 将打包好的模块发送到PYPI平台:twine upload dist/*
  • 可以发送到公司的PYPI服务器,如果公司搭建了pypiserver服务器,那么可以直接将tar.gz的包放在对应的目录下,公司内部下载即可;

参考:https://www.9xkd.com/user/pla...


Summer
83 声望9 粉丝

关于Python学习的一些小知识