python 如何上传包到pypi

有过一定的 Python 经验的开发者都知道,当引入第三方包时,我们常常会使用 pip install 命令来下载并导入包。

那么,如何写一个自己的包,上传到 PyPI 呢,其他开发者也可以通过 pip install 命令下载并导入?

本文提供了最简单的示例。

准备好项目目录

创建一个项目目录,其目录结构如下:

/packaging_tutorial
 /example_pkg
  __init__.py

其中,packaging_tutorial 是一个文件目录,example_pkg 是一个你希望上传的 Python 包。

注:本人使用的是 virtualenv + virtualenvwrapper 构建的 Python 虚拟环境,因此 python 和 pip 命令(而非 python3 和 pip3)直接对应的是我所指定的虚拟环境(Python 3.6.7)。

创建一些必要文件

再向 packaging_tutorial 中创建一些文件。其目录结构如下:

/packaging_tutorial
 /example_pkg
  __init__.py
 setup.py
 LICENSE
 README.md

创建 README.md 文件

在 README.md 可以输入一些介绍项目的文档。

# 测试

这只是一个测试。

- 测试 1
- 测试 2
- 测试 3

创建 setup.py 文件

setup.py 是 setuptools 的构建脚本,它提供了包的各种信息。

在 setup.py 中输入以下代码:

import setuptools

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

setuptools.setup(
  name="example-pkg-your-username",
  version="0.0.1",
  author="Example Author",
  author_email="author@example.com",
  description="A small example package",
  long_description=long_description,
  long_description_content_type="text/markdown",
  url="https://github.com/pypa/sampleproject",
  packages=setuptools.find_packages(),
  classifiers=[
    "Programming Language :: Python :: 3",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
  ],
)

各个配置的字段的含义应该是不言而喻的,如果想了解更多,参见官网解释。

创建 LICENSE

LICENSE 是项目所遵循的许可证,以 MIT 为例:

Copyright (c) 2018 The Python Packaging Authority

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

存档发布版本

一般来说,pip 默认应该都安装了 setuptools 和 wheel。如果没有安装,则安装之:

pip install setuptools wheel -i https://pypi.douban.com/simple

如果安装需要更新,则更新之:

pip install --upgrade setuptools wheel -i https://pypi.douban.com/simple

安装好最新版本后,在 setup.py 所在目录下输入:

python setup.py sdist bdist_wheel

这个命令会在生成一个 dist 目录,里面有两个文件:

dist/
 example_pkg_your_username-0.0.1-py3-none-any.whl
 example_pkg_your_username-0.0.1.tar.gz

tar.gz 是源文件存档,whl 是构建的发布版本。

上传发布版本

安装 twine:

pip install twine -i https://pypi.douban.com/simple

安装好之后,执行 twine 命令(这里,需要注意你已经注册了 PyPI 的账号):

twine upload dist/*
Enter your username: heyulong
Enter your password:
Uploading distributions to https://upload.pypi.org/legacy/
Uploading example_pkg_heyulong-0.0.1-py3-none-any.whl
100%|██████████████████████████████████████| 5.49k/5.49k [00:01<00:00, 4.66kB/s]
Uploading example-pkg-heyulong-0.0.1.tar.gz
100%|██████████████████████████████████████| 4.23k/4.23k [00:01<00:00, 2.21kB/s]

执行完之后,即可在 PyPI 官网上看到自己上传的项目了。

安装你上传的 PyPI 项目,比如我的:

pip install example-pkg-heyulong

这里简单介绍了上传 PyPI 项目的过程。更多细节请关注 PyPI 官网。

以上就是python 如何上传包到pypi的详细内容,更多关于python 上传包到pypi的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python上传package到Pypi(代码简单)

    废话不多说了,直接给大家贴代码了. 编写setup.py后 $ python setup.py register $ python setup.py sdist upload 以上是针对Python上传package到Pypi(代码简单)的全部内容,本文写的不好,还请大家多多指教,在此小编祝大家新年快乐.

  • Python 实现文件打包、上传与校验的方法

    不多说,我们直接上源码: # -*- coding:UTF-8 -*- ''' 实现文件打包.上传与校验 Created on 2018年1月12日 @author: liuyazhuang ''' from fabric.api import * from fabric.context_managers import * from fabric.contrib.console import confirm env.user = 'root' env.hosts = ['10.2.2.2'] e

  • Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解

    wheel文件 Wheel和Egg都是python的打包格式,目的是支持不需要编译或制作的安装过程,实际上也是一种压缩文件,将.whl的后缀改为.zip即可可看到压缩包里面的内容.按照官网说法,wheels是发行版Python的新标准并且要取代.egg. Egg格式是由setuptools在2004年引入,而Wheel格式是由PEP427在2012年定义. Wheel现在被认为是Python的二进制包的标准格式. 以下是Wheel和Egg的主要的不同点: Wheel有一个官方的PEP427来定义

  • 将python包发布到PyPI和制作whl文件方式

    wheel文件 Wheel和Egg都是python的打包格式,目的是支持不需要编译或制作的安装过程,实际上也是一种压缩文件,将.whl的后缀改为.zip即可可看到压缩包里面的内容.按照官网说法,wheels是发行版Python的新标准并且要取代.egg. Egg格式是由setuptools在2004年引入,而Wheel格式是由PEP427在2012年定义. Wheel现在被认为是Python的二进制包的标准格式. 以下是Wheel和Egg的主要的不同点: Wheel有一个官方的PEP427来定义

  • python上传时包含boundary时的解决方法

    python上传时,包含boundary时的处理方式 img_url = [] upload_pic_url = "http://admin.mdt.oujingroup.cn/uploader/img" headers = { 'X-Requested-With': 'XMLHttpRequest', } img_file = open(name, 'rb') multipart_encoder = MultipartEncoder( fields={ 'file': ('test.

  • Python中pip安装非PyPI官网第三方库的方法

    在python中安装非自带python模块,有三种方式: 1.easy_install 2.pip 3.下载压缩包(.zip, .tar, .tar.gz)后解压, 进入解压缩的目录后执行python setup.py install命令 本文主要针对pip安装时可能会碰到的一种情况,及解决办法: 假如我要安装pylint模块,该模块非python自带模块,用import肯定不能导入,需要额外安装 复制代码 代码如下: >>> import pylint  Traceback (most

  • 如何通过python的fabric包完成代码上传部署

    首先是安装fabric包 pip install fabric fabric常用参数 -l : 显示定义好的任务函数名 -f : 指定fab入口文件,默认入口文件名为fabfile.py -H : 指定目标主机,多台主机用","号分割 fabric常用API local : 执行本地命令,如:local('uname -s') lcd : 切换本地目录,如:lcd('/home') cd : 切换远程目录,如:cd('/etc') run : 执行远程命令,如:run('free -m

  • python自制包并用pip免提交到pypi仅安装到本机【推荐】

    不得不说python的自制包的相关工具真是多且混乱,什么setuptools,什么distutils,什么wheel,什么egg!!怎么有这么多啊?? 而且我的需求且且是创建一个自制包管理自己常用的代码,也必不想提交到PyPI,仅仅只需要安装到本机就行. 下面就是几个关键步骤. 文件目录布局 ├── package1 │ └──-├── init .py | |── mod1.py │ └── mod2.py ├── setup.py |── README.md 编写setup.py文件,类似如

  • python 如何上传包到pypi

    有过一定的 Python 经验的开发者都知道,当引入第三方包时,我们常常会使用 pip install 命令来下载并导入包. 那么,如何写一个自己的包,上传到 PyPI 呢,其他开发者也可以通过 pip install 命令下载并导入? 本文提供了最简单的示例. 准备好项目目录 创建一个项目目录,其目录结构如下: /packaging_tutorial /example_pkg __init__.py 其中,packaging_tutorial 是一个文件目录,example_pkg 是一个你希

  • Python实现上传Minio和阿里Oss文件

    目录 前言 环境依赖 代码 补充 前言 本文提供Python上传minio以及阿里oss文件工具,给自己留个记录. 环境依赖 安装minio以及oss2依赖 pip install minio -i https://pypi.douban.com/simple pip install oss2 -i https://pypi.douban.com/simple 代码 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/12/1

  • python实现上传样本到virustotal并查询扫描信息的方法

    本文实例讲述了python实现上传样本到virustotal并查询扫描信息的方法.分享给大家供大家参考.具体方法如下: import simplejson import urllib import urllib2 import os MD5 = "5248f774d2ee0a10936d0b1dc89107f1" MD5 = "12fa5fb74201d9b6a14f63fbf9a81ff6" #do not have report on virustotal.co

  • python实现上传下载文件功能

    最近刚学python,遇到上传下载文件功能需求,记录下! django web项目,前端上传控件用的是uploadify. 文件上传 - 后台view 的 Python代码如下: @csrf_exempt @require_http_methods(["POST"]) def uploadFiles(request): try: user = request.session.get('user') allFimeNames = "" #获取所有上传文件 files

  • python实现上传文件到linux指定目录的方法

    今天接到一个小需求,就是想在windows环境下,上传压缩文件到linux指定的目录位置并且解压出来,然后我想了一下,这个可以用python试试写下. 环境: 1.linux操作系统一台 2.windows环境安装Python3.x 3.Pycharm IDE环境 大家如果对paramiko模块不熟悉的话,可以去了解哈. 上传文件用到SFTPCLient,SFTPCLient作为一个sftp的客户端对象,根据ssh传输协议的sftp会话,实现远程文件操作,如上传.下载.权限.状态. 代码如下 #

  • Python tornado上传文件的功能

    Tornado是一种 Web 服务器软件的开源版本.Tornado 和主流Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快. 得利于其非阻塞的方式和对epoll的运用,Tornado 每秒可以处理数以千计的连接,因此 Tornado 是实时 Web 服务的一个 理想框架. 在web开发过程中,文件上传是经常用到的功能,比如上传附件,上传照片等.下面我们来介绍一下利用tornado 来实现简单的文件上传功能. 普通上传 # coding: u

  • Python Flask 上传文件测试示例

    目录 Flask file upload代码 上传测试 上传临时文件 使用 tempfile 使用 StringIO 其他 Flask file upload代码 import os from flask import Flask, request, redirect, url_for, send_from_directory from werkzeug.utils import secure_filename UPLOAD_FOLDER = '/tmp/flask-upload-test/'

  • Python Paramiko上传下载sftp文件及远程执行命令详解

    目录 一.简介 安装模块 二.上传文件 三.下载文件 四.远程执行命令 五.错误集锦 原因 解决 一.简介 Paramiko模块是基于Python实现的SSH远程安全连接,用于SSH远程执行命令.文件传输等功能. 安装模块 默认Python没有自带,需要手动安装: pip3 install paramiko 二.上传文件 #!/usr/bin/env python3 # coding: utf-8 import paramiko def sftp_upload_file(host,user,pa

  • Python ftp上传文件

    以下代码比较简单,对python实现ftp上传文件相关知识感兴趣的朋友可以参考下 #encoding=utf8 from ftplib import FTP #加载ftp模块 IP = '103.240.150.104' user = 'webmaster@stchat.cn' password = '5' filename = 'zhihu.html' path = '/root/Desktop/zhihu.html' ftp=FTP() #设置变量 ftp.set_debuglevel(2)

随机推荐