如何将python代码打包成pip包(可以pip install)

  • Post category:Python

将Python代码打包成pip包可以方便其他人使用,本文将提供详细攻略。

准备工作

在打包之前需要安装setuptools和wheel库,通过pip安装:

pip install setuptools wheel

创建setup.py文件

创建一个名为setup.py的文件,内容为:

from setuptools import setup, find_packages

setup(
    name='yourpackagename', # 包名
    version='0.0.1', # 版本号
    packages=find_packages(exclude=['test']), # 包含所有包含__init__.py的目录
    url='yourpackageurl', # 包的主页链接
    license='MIT', # 授权方式
    author='YourName', # 作者姓名
    author_email='your.email@example.com', # 作者Email
    description='Your package description', # 包的描述信息
    classifiers=[ # 包的标签
        'Development Status :: 3 - Alpha',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.6',
        'License :: OSI Approved :: MIT License',
        'Operating System :: OS Independent',
        'Topic :: Software Development :: Libraries :: Python Modules',
    ],
    install_requires=[
        'somepackage>=1.1.0', # 依赖的包及版本号
    ],
)

其中name、version、author、author_email、description、url和install_requires是必须的字段。classifiers是可选字段,表示包的分类、授权、开发状态、操作系统等信息。

创建README.md文件

打包时需要添加一个README.md文件作为说明文档。

打包

将要打包的文件和setup.py文件放在同一目录下,使用命令行进入该目录。使用如下命令打包:

python setup.py sdist bdist_wheel

此时会在目录下生成dist目录,其中包含两个文件,一个是使用源码打包生成的.tar.gz文件,另一个是使用wheel打包生成的.whl文件。

发布

Pypi注册账号,然后使用以下命令上传:

pip install twine
twine upload dist/*

示例说明

下面是两个示例:

示例一

mysum文件夹下放置以下代码:

def sum(a, b):
    return a + b

接着创建setup.py文件内容:

from setuptools import setup, find_packages

setup(
    name='mysum', # 包名
    version='0.0.1', # 版本号
    packages=find_packages(exclude=['test']), # 包含所有包含__init__.py的目录
    url='https://github.com/username/mysum', # 包的主页链接
    license='MIT', # 授权方式
    author='YourName', # 作者姓名
    author_email='your.email@example.com', # 作者Email
    description='My sum package', # 包的描述信息
    classifiers=[ # 包的标签
        'Development Status :: 3 - Alpha',
        'Programming Language :: Python :: 3',
        'License :: OSI Approved :: MIT License',
        'Operating System :: OS Independent',
        'Topic :: Software Development :: Libraries :: Python Modules',
    ],
)

使用命令行进入mysum文件夹,打包:

python setup.py sdist bdist_wheel

示例二

mycalc文件夹下放置以下代码:

def add(a, b):
    return a + b

def sub(a, b):
    return a - b

接着创建setup.py文件内容:

from setuptools import setup, find_packages

setup(
    name='mycalc', # 包名
    version='0.0.1', # 版本号
    packages=find_packages(exclude=['test']), # 包含所有包含__init__.py的目录
    url='https://github.com/username/mycalc', # 包的主页链接
    license='MIT', # 授权方式
    author='YourName', # 作者姓名
    author_email='your.email@example.com', # 作者Email
    description='My calculator package', # 包的描述信息
    classifiers=[ # 包的标签
        'Development Status :: 3 - Alpha',
        'Programming Language :: Python :: 3',
        'License :: OSI Approved :: MIT License',
        'Operating System :: OS Independent',
        'Topic :: Software Development :: Libraries :: Python Modules',
    ],
    install_requires=[
            'numpy>=1.14.5',
        ],
)

使用命令行进入mycalc文件夹,打包:

python setup.py sdist bdist_wheel

以上就是将Python代码打包成pip包的完整攻略,包含两个示例说明。