使用pip发布Python程序的方法步骤

写过 Python 程序的小伙伴们都知道,需要 import 个非 Python 自带的软件包时,都要用到 pip 这个程序。平时我们都是用 pip,如果我们写好了一个程序,想让大家都能用的到,那么是不是也可以通过 pip 发布出去呢?

答案当然是可以了,这篇文章我们就来看看如何用 pip 发布一个 python 程序。

1. 环境准备

要用 pip 发布 python 程序,首先当然是要安装 Python 和 pip 这两个软件了,以 Ubuntu 16.04 为例:

$ sudo apt update
$ sudo apt install -y python python-pip

CentOS 和 RedHat 因为 RPM 体系需要依赖于 python,更是默认就安装好了。

另外发布 Pypi,还需要安装一个发布工具, twine ,以及其所依赖的 setuptools、wheel:

$ sudo pip install --upgrade twine setuptools wheel

好,到这环境就已经就绪了。

2. 注册帐号

pip 上传代码包是最终保存在 https://pypi.org 这个网站上的,所以要用 pip 发布程序,就需要在这个网站上注册一个帐号。

访问该网址进行注册: https://pypi.org/account/register/

注册后还需要进行邮箱验证,流程和普通网站没有任何区别,所以具体步骤就不在这里详细介绍了。

3. 代码结构

要发布 Python 程序,程序的结构必须符合特定的要求,假设要发布的程序名为 example-pkg,基本的目录结构如下:

/example-pkg
 /example-pkg
  __init__.py
 setup.py
 LICENSE
 README.md

说一下目录和文件的含义:

  • 首先最外层要建立一个和发出程序同名的文件夹: /example-pkg
  • 该文件夹下还要再简历一个同名文件夹,用来存放程序代码: /example-pkg/example-pkg
  • Python 的老规矩,example-pkg/example-pkg 目录下当然要有一个 __init__.py 文件。
  • /example-pkg 目录下要有一个叫 setup.py 的文件,如果下载过 Python 代码包,应该都知道这个文件,需要通过这个文件进行 Python 代码的编译(可能会有依赖的其他代码包或者依赖的 C 文件)和安装。
  • LICENSE 文件:这个文件就是用来保存代码所使用的开源许可证。
  • README.md:这个是软件行业的惯例了,帮助文档。

对于 setup.py 文件,还有必要好好说说,先贴个例子,下面这个例子中,主要是实现了从 /example-pkg/example-pkg/__init__.py 文件中读取 version 参数,来配置当前软件的版本,并指定了代码包名(name)、作者(author)、邮箱(author_email)、描述信息(long_description、long_description_content_type)、依赖(install_requires),以及哪些文件不会被打包到程序中(exclude_package_data)。

另外需要提醒大家一点, 给程序起名字不要带下划线(_) ,python import 代码包时,是不支持下划线包名的,出现这种情况就比较尴尬,代码装上了,还是用不了。

#!/usr/bin/env python

import re
import setuptools

version = ""
with open('example-pkg/__init__.py', 'r') as fd:
  version = re.search(r'^__version__\s*=\s*[\'"]([^\'"]*)[\'"]',
            fd.read(), re.MULTILINE).group(1)

with open("README.md", "r") as fh:
  long_description = fh.read()

setuptools.setup(
  name="example-pkg",
  version=version,
  author="example",
  author_email="author@example.com",
  description="This is the SDK for example.",
  long_description=long_description,
  long_description_content_type="text/markdown",
  url="http://example.com",
  install_requires=[
    'requests!=2.9.0',
    'lxml>=4.2.3',
    'monotonic>=1.5',
  ],
  packages=setuptools.find_packages(exclude=("test")),
  classifiers=(
    "License :: OSI Approved :: MIT License",
    "Intended Audience :: Developers",
    "Operating System :: OS Independent",
    "Programming Language :: Python",
    "Programming Language :: Python :: 2",
    "Programming Language :: Python :: 2.6",
    "Programming Language :: Python :: 2.7",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.3",
    "Programming Language :: Python :: 3.4",
    "Programming Language :: Python :: 3.5"
  ),
  exclude_package_data={'': ["example-pkg/test.py", "example-pkg/config.txt"]},
)

4. 上传和检查

一切准备就绪,下面就可以执行打包命令,产生要上传的代码包了:

$ python setup.py sdist bdist_wheel

执行结束后,会产生如下目录和文件:

/example-pkg/dist/
 example-pkg-0.0.1-py3-none-any.whl
 example-pkg-0.0.1.tar.gz

包有了,就差上传了,执行第一步中安装的 twine 命令:

$ twine upload dist/*
Uploading distributions to https://upload.pypi.org/legacy/
Enter your username: <your pypi.org username>
Enter your password: <your pypi.org password>
Uploading example-pkg-0.0.1-py3-none-any.whl
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 45.0k/45.0k [00:01<00:00, 24.0kB/s]
Uploading example-pkg-0.0.1.tar.gz
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 43.8k/43.8k [00:00<00:00, 46.2kB/s]

上传完毕!不过这里有一点需要注意,上传新版本后,很可能 pip search 还没法查到版本的更新,这是正常的,我理解是

pip search 命令依赖于缓存,所以不会立刻生效。

接下来就让我们下载自己刚刚上传的 python 试试吧:

$ pip install example-pkg
$ python
>>> import example-pkg
>>> example-pkg.name
'example-pkg'

最后再补充一点,上传可能会失败,提示无法上传指定的代码包,此时很大的可能是 pypi 中已经有了相同的代码包,所以建议在上传之前,先搜索一下是否有重名的代码包,选择一个不冲突的名字,再上传。

例如下面这个例子,example-pkg 已经存在了,如果要再上传,那当然会失败,换个名字就解决了。

$ pip search example-pkg
example-pkg (0.0.7)                      - A small example package
......

5. 参考文档

Packaging Python Projects

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • python如何发布自已pip项目的方法步骤

    前言 因为自已平时会把一个常用到逻辑写成一个工具python脚本,像关于时间字符串处理,像关于路径和文件夹遍历什么的工具.每一次新建一个项目的时候都要把这些工具程序复制到每个项目中,换一个电脑后还要从github生新下载后再复制到项目中,实在太麻烦.最后想想,还是建一个自已的pip项目会比较好. 环境准备 要用 pip 发布 python 程序,首先当然是要安装 Python 和 pip 这两个软件了,以 Ubuntu 16.04 为例: $ sudo apt update $ sudo apt

  • 使用pip发布Python程序的方法步骤

    写过 Python 程序的小伙伴们都知道,需要 import 个非 Python 自带的软件包时,都要用到 pip 这个程序.平时我们都是用 pip,如果我们写好了一个程序,想让大家都能用的到,那么是不是也可以通过 pip 发布出去呢? 答案当然是可以了,这篇文章我们就来看看如何用 pip 发布一个 python 程序. 1. 环境准备 要用 pip 发布 python 程序,首先当然是要安装 Python 和 pip 这两个软件了,以 Ubuntu 16.04 为例: $ sudo apt u

  • 利用setuptools打包python程序的方法步骤

    一.准备工程文件 1.创建工程leeoo 2.在工程根目录下创建setup.py文件 3.在工程根目录下创建同名package 二.编辑setup.py 1.编辑setup.py文件 from setuptools import setup, find_packages setup( name='leeoo', # 包的名称 version='1.0', # 版本号 packages=find_packages(), # 动态获取packages description="leeoo packa

  • 使用spyder3调试python程序的实现步骤

    目录 Spyder官方文档地址 开始调试 打断点的两种姿势 普通的breakpoint 带条件的breakpoint 总结一下刚刚所讲的 剩下的一些细节 Step Into Return 说是简明教程,其实是我自己尝试用spyder调试python程序的过程的一个记录,因为spyder的调试功能是基于pdb,而我又没有pdb的基础,所以刚开始上手时感觉很不习惯,而且那时我又很懒,没去找官方文档,仅仅在百度和csdn上找了找,没找到比较好的资料,于是放弃了,过了一段时间之后,突然又心血来潮,去找了

  • 增大python字体的方法步骤

    1.点击开始菜单,打开IDLE程序. 2.默认字体大小给出一个直观的展示. 3.点击菜单栏的"Options". 4.然后在下拉菜单中选择"Configure IDLE". 5.默认字体是新宋体,大小是size=4. 6.对字体大小进行调整后,点击"确认". 7.这样,字体大小就进行了对应的调整. 到此这篇关于增大python字体的方法步骤的文章就介绍到这了,更多相关如何增大python字体内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家

  • jenkins自动构建发布vue项目的方法步骤

    简介 Jenkins是一个开源的.提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续.自动的构建/测试软件项目.监控外部任务的运行(这个比较抽象,暂且写上,不做解释).Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行.通常与版本管理工具(SCM).构建工具结合使用.常用的版本控制工具有SVN.GIT,构建工具有Maven.Ant.Gradle. jenkins安装 1.安装JDK yum install

  • 如何在vscode中安装python库的方法步骤

    vscode安装python库 1.已经在vscode中装了python并配置好python运行环境. 检查是否正确配置好运行环境,按Windows+R组合键在运行窗口输入cmd,打开命令提示符窗口输入python确定即可 2.找到vscode中python的路径 随便运行一个代码,例如print("hehe")下面的终端显示如下 图中红色地方圈起的便是python的路径,到python3.8为止. 如果你所显示的内容与我不同,可在setting.json中查找并将路径复制下来(在vs

  • 以windows service方式运行Python程序的方法

    本文实例讲述了以windows service方式运行Python程序的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python # coding: utf-8 # SmallestService.py # # A sample demonstrating the smallest possible service written in Python. import win32serviceutil import win32service import win3

  • 在cmd命令行里进入和退出Python程序的方法

    进入: 直接输入python即可,如图所示 退出: 1:输入exit(),回车 2:输入quit(),回车 3:输入ctrl+z,回车 以上这篇在cmd命令行里进入和退出Python程序的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们. 您可能感兴趣的文章: Python程序退出方式小结 对python中执行DOS命令的3种方法总结 python中执行shell命令的几个方法小结

  • 利用Pycharm断点调试Python程序的方法

    1.代码 准备没有语法错误的Python程序: #!/usr/bin/python import numpy as np class Network: def __init__(self,sizes): self.num_layers=len(sizes) self.sizes=sizes self.biases=[np.random.randn(y,1) for y in sizes[1:]] self.weights=[np.random.randn(x,y) \ for x,y in zi

  • docker启动Java程序的方法步骤

    创建一个简单的Spring boot web项目 idea工具创建Spring boot web项目,因为是测试,一直next就行. 写一个test API,用来访问,服务端口号可以不用改,我本地改成8701. 程序启动,发现程序不是默认的8080端口了,访问:http://localhost:8701/v1/hello 以上一个简单web项目建好了,下面我们通过docker来运行这个demo项目 第一步,你需要安装docker(这里不做详细步骤). 第二步,我们需要一个有java环境docke

随机推荐