最近pypi官网进行了更新,老的上传网址作废了。记录下上传到pypi的方法

0、去pypi官网注册账号,没账号是不可能上传的,想想也是那不乱套了吗,注册后会收到一个邮件需要点击然后重新登录

1、目录就是这样 ,我要上传mulitiprocessing_log_manager这个包到官网。

2、其中有两个mulitiprocessing_log_manager文件夹,最外层的叫什么都无所谓啦。但要确保setup.py和内层的这个是同级的,别搞成把setup.py放到包文件夹里面去了。

3、build dist 和multiprocessing_log_manager.egg-info 文件夹 是打包生成的,所以一共就有mulitiprocessing_log_manager这个包文件夹 和MANIFEST.in文件 README.md文件 setup.py文件。

4、README文件是可以显示到官网中的说明的。但前提是必须要setup中引用它的内容才能生效,同理叫什么名字什么后缀的也都无所谓 了。

5、setup文件夹如下,这个文件是最主要的。

# coding=utf-8

from setuptools import setup, find_packages

with open("README.md", "r") as fh:  这里就是读取readme文件的内容了。
long_description = fh.read() setup(
name='multiprocessing_log_manager', # '库的名称,一般写成文件夹的名字就可以了,也有的人不写成文件夹的名字,那么pip install和具体的import使用时候就不一样了,用起来会十分蛋疼,有一些包就是这样的。比如一个包,安装时候是pip install xxx,但当你要使用时候要import yyy version="0.1.2", # 版本,每次发版本都不能重复,每次发版必须改这个地方
description=(
'Multi-process secure logs both in linux and windows' # 一个简介,别人搜索包时候,这个概要信息会显示在在搜索列表中
),
long_description=open('README.md', 'r').read(), # 这是详细的,一般是交别人怎么用,很多包没写,那么在官网就造成没有使用介绍了
long_description_content_type="text/markdown",
author='bfzs', # 作者
author_email='909686719@qq.com',
maintainer='ydf', # 主要的工作人员
maintainer_email='909686719@qq.com',
license='BSD License',
# packages=['douban'], # 发布的包名
packages=find_packages(),
platforms=["all"],
url='https://baike.baidu.com/item/%E9%82%93%E4%B8%BD%E5%90%9B/27007?fr=aladdin', # 这个是连接,一般写github就可以了,会从pypi跳转到这里去
classifiers=[
'Development Status :: 4 - Beta',
'Operating System :: OS Independent',
'Intended Audience :: Developers',
'License :: OSI Approved :: BSD License',
'Programming Language :: Python',
'Programming Language :: Python :: Implementation',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Topic :: Software Development :: Libraries'
],
install_requires=[ # 这里是依赖列表,表示运行这个包的运行某些功能还需要你安装其他的包
'pymongo',
]
)

6、最重要的是别忘了这个文件

一定不要忘了写一个MANiFEST.in文件,并且包含README.md这个文件,否则自己能在本地直接安装这个包,但使用pip 安装时候就会报错找不到这个文件了,因为默认不会上传readme这个文件的,只会上传包里面的内容。除非你在setup文件中没有写引用到readme这个文件的内容,pip安装那就不会出错了。MANiFEST.in这个文件名称是固定的,必须是这个名字。

pip安装三方包时候,这个错误相当普遍 ,很多三方包pip 安装 时候 报错FileNotFoundError: [Errno 2] No such file or directory: 'README.md',就是这个原因造成。

我的readme文件,

7、打包上传

python setup.py check     # 可以先做一些检查
python setup.py sdist upload -r pypi          # 打包注册(注册指的是注册你要上传的库的包名,不要理解成注册pypi账号了)上传一条龙了。运行完这条命令后就能在官网个人中心看到自己的包了,要全网能搜自己刚才上传注册的包需要在上传后20分钟以后才行。

在上传之前,你自己也可以,使用python setup.py 来安装,然后测试一下主要方法,确认没问题了再上传注册这个包也不迟。其中一些问题比如会是  相对导入问题,你在pycharm的项目直接一级文件夹下建的文件夹,有自动把项目顶层添加到环境变量到sys.path,但离开pycahrm就没了这个环境变量,所以如果你不精通相对导入这些的知识点的话,就需要自己用setup.py安装后测试运行一下。

8、 然后就可以pip install 命令安装自己刚才上传的包啦,不一定能很及时的安装,可能需要上传3分钟后才能下载最新版本。如果你是设置了全局用阿里 或者豆瓣 清华什么的加速镜像,那就要等更久了。因为阿里是每10分钟才同步更新一次 pypi官网的。

如果全局设置了使用其他加速,也可以在安装时候指定源   pip install -i https://pypi.org/simple/ multiprocessing_log_manager   。比如 这样就强制使用官方源了,不管你是否设置了全局 阿里 豆瓣什么的。

9、在第七步中上传时候会 提醒你 输入账号 密码的,还是有点烦人,可以在全局中设置。

具体是如果是linux ,在当前用户新建这个文件  ~/.pypirc

如果是windows,在C:\Users\Administrator创建 .pypirc. 文件,注意是前后各有一个点,不然在win下 创建不了这个文件。具体的C:\Users\Administrator取决于你在什么盘 的什么用户下。

.pypirc文件中写入内容为:

[distutils]
index-servers = pypi

[pypi]
username:ydf0509      用户名
password:12345xxxx     密码

有了这个文件,以后每次上传包都不需要输入账号密码了。

10、总结下,这是上传的第一个包,还不错,网上说的方法很多过时的,也不详细,加上最近pypi官网换域名了,老方法不行。

可以更加了解了三方包到底是怎么一回事和安装时候为什么会出错呢,自己上传过就能更加知道经常有三方包安装出错的原因。

之前要用一个包就要把它复制到各个项目去,有点麻烦。添加本地文件夹到环境变量虽然能解决到处复制,如果忘了更改测试和生产环境,或者忘了添加到那些地方去,也会悲剧了。把pypi官网当作一个包的中转站也挺不错的,在家 在公司 在各个不同项目 在各个环境都能方便使用。

目前是setup里面各个参数目的都达到了,唯一是详细说明的markdown格式在网页中没有显示正确的字体大小,需要看下原因。

官方参考地址

https://packaging.python.org/tutorials/packaging-projects/#uploading-your-project-to-pypi,和我这篇很多不一样。

个人中心截图

pypi官网显示的项目截图

大家可以安装这个包 pip install mulitiprocessing_log_manager,是一个带有彩色控制台handler和mongodb handler以及win和linux都多进程安全切片的roatatingfilehandler,用法十分简单,只有两个方法。

2018年7月份,python上传自己的包库到pypi官网的方法的更多相关文章

  1. windows上python上传下载文件到linux服务器指定路径【转】

    从windows上传文件到linux,目录下的文件夹自动创建 #!/usr/bin/env python # coding: utf-8 import paramiko import datetime ...

  2. 详解.Net 如何上传自己的包到Nuget平台以及如何使用Nuget包管理器

    首先需要一个Nuget账户,可以在官网注册:https://www.nuget.org.已有账户略. 需要一个ApiKeys,登录之后,在我的账户里找到ApiKeys进去; 创建ApiKeys 下载N ...

  3. Maven入门:使用Nexus搭建Maven私服及上传下载jar包

    一. 私服搭建及配置 1 . 私服简介 私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件.有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓 ...

  4. NPM 上传自己的包

    NPM 上传自己的包 项目中经常 npm install,npm init啥的,那么如何上传自己的包到npm上呢. 注册账号 NPM官网 本地弄一个包 创建npm_test 文件夹 注:不能够有一些特 ...

  5. 上传 第三方jar包 nexus

    手动上传第三方jar包到nexus的步奏: 1)按下图方式进行 2)按下图完成上传 3)点击保存完成

  6. GIT将本地项目上传到Github(两种简单、方便的方法)

    GIT将本地项目上传到Github(两种简单.方便的方法) 一.第一种方法: 首先你需要一个github账号,所有还没有的话先去注册吧! https://github.com/ 我们使用git需要先安 ...

  7. Nexus-在项目中使用Maven私服,Deploy到私服、上传第三方jar包、在项目中使用私服jar包

    场景 Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/ ...

  8. GitHub上传项目到远程库

    写文章 GitHub上传项目到远程库     GitHub上传项目到远程库 今天把想把文件托管到GitHub仓库,但是执行一系列的命令以后,刷新GitHub网站还是没有任何更新.后来终于找到原因,原来 ...

  9. Git 使用,本地项目上传到GitHub远程库

    Git 使用,本地项目上传到GitHub远程库 环境 GitHub账号 点此进入github官网 git客户端工具 点此进入git下载页 本地项目上传到 GitHub 在GitHub中创建一个仓库(远 ...

随机推荐

  1. win10里如何在中文输入法里添加美国键盘

    在控制面板打开“时钟.语言和区域”设置界面,选中“语言”设置   “语言”设置里点击“添加语言”   在添加语言设置里选择“英语”,并点击“打开”按钮,在“区域变量”设置页面里选择“英语(美国)” , ...

  2. nginx负载均衡和反相代理的配置

    偷懒,参考这里 https://www.cnblogs.com/taiyonghai/p/6728707.html

  3. 【javascript】js 检验密码强度

    最近一直在做通行证项目,里面的注册模块中输入密码需要显示密码强度(低中高).今天就把做的效果给大家分享下,代码没有网上搜索的那么复杂,能够满足一般的需求. html 代码如下: <!DOCTYP ...

  4. DataWindow.Net组件示例(全部开源)

    1概述 1.1功能简介 Sybase公司的PowerBuilder开发工具,在以前VS工具没有成事以前,是相当风光的.微软都要与其合作,学习它Db方面的技术,才成就了SQLServer数据库.PB开发 ...

  5. Android studio 3+版本apk安装失败问题

    studio2.3升级到3.1之后将apk发给别人下载到手机上安装,华为提示安装包无效或与操作系统不兼容,魅族提示apk仅为测试版,要求下载正式版安装. 在网上找了一下,发现是studio3.0之后的 ...

  6. 图的基本算法(BFS和DFS)

    图是一种灵活的数据结构,一般作为一种模型用来定义对象之间的关系或联系.对象由顶点(V)表示,而对象之间的关系或者关联则通过图的边(E)来表示. 图可以分为有向图和无向图,一般用G=(V,E)来表示图. ...

  7. SSH-CLIENT : gSTM

    Linux环境下可以使用终端命令行直接登录SSH帐号.但是对Linux新手,可能不太习惯用命令行,于是我就琢磨找一款Linux环境下可以图形化管理ssh帐号的客户端软件,还真让我找着了. gSTM,是 ...

  8. Eclipse导入到web项目没有run on server

    由于以前的项目都是用myeclipse开发的,现在要换成eclipse来开发.但是项目导入到eclipse中发现该项目并不是web项目,也不能部署到tomcat里面去. 现在解决了这个问题了.     ...

  9. Airtest 网易 UI 自动化工具 Airtest 浅用记录

    一 使用目的 该工具主要是面向游戏UI测试基于图像识别,如游戏框架unity,Cocos-js以及网易内部的游戏框架同时也支持原生Android App 的基于元素识别的UI自动化测试.本文主要使用目 ...

  10. pandas汇总和计算描述统计

    pandas 对象拥有一组常用的数学和统计方法. 他们大部分都属于简约和汇总统计, 用于从Series中提取单个值(如sum或mean) 或从DataFrame的行或列中提取一个Series.跟对应的 ...