2018年7月份,python上传自己的包库到pypi官网的方法

最近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-8from setuptools import setup, find_packageswith 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,用法十分简单,只有两个方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/451317.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

写给大数据开发初学者的话2

见 : http://lxw1234.com/archives/2016/11/782.htm 如果你已经按照《写给大数据开发初学者的话》中第一章和第二章的流程认真完整的走了一遍,那么你应该已经具备以下技能和知识点: 0和Hadoop2.0的区别;MapReduce的原理(还是那个…

Pandas的结构和应用

Pandas处理以下三个数据结构 - 系列(Series)----一维ndarray   特点:带有标签,可以使用标签作为索引,大小不能改变,内部数据可以改变。 属性:与NumPy类似,多了一个轴标签axis lables 数据…

时间即财富:创业者浪费精力的八个错误

导读:本文作者Jeff Miller是美食网页应用Punchfork的创始人,同时也是DuckDuckGo、Ginzametrics、Art.sy、DataMinr以及Forkly的投资人。作者通过对自己创业初期一些错误选择进行盘点,告诉读者在创业初期应该学会选择,因为在创业初…

写给大数据开发初学者的话3

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 如果你已经按照《写给大数据开发初学者的话2》中第三章和第四章的流程认真完整的走了一遍,那么你应该已经具备以下技能和知识…

十五周二次课

18.6 负载均衡集群介绍 主流开源软件LVS、keepalived、haproxy、nginx等其中LVS属于4层(网络OSI 7层模型),nginx属于7层,haproxy既可以认为是4层,也可以当做7层使用keepalived的负载均衡功能其实就是lvslvs这种4层的负…

写给大数据开发初学者的话4

见:http://lxw1234.com/archives/2016/11/795.htm 如果你已经按照《写给大数据开发初学者的话3》中第五章和第六章的流程认真完整的走了一遍,那么你应该已经具备以下技能和知识点: 为什么Spark比MapReduce快。使用SparkSQL代替Hive&#xff…

域名解析服务之DNS查询类型

在实际应用中DNS查询主要分为两种方式查询:1.递归查询;2.迭代查询 一般情况下:为了减少资源的消耗,网络中客户端与所属的本地DNS服务器查询方式通常为递归查询,本地DNS服务器与外部的公共DNS服务器间的查询方式为迭代查…

MFC Ribbon界面设计

Ribbon是类似于office2007样式的界面,它替代了传统的MFC程序里的菜单和工具栏 MFC默认生成的Ribbon功能少,需要我们自己添加一些控件和图片等元素使界面好看 看下面的一个界面,是VC2010示例里的 看到它与默认Ribbon样式的区别: 工…

获取泛型T的ClassT clazz

在我们搭建框架中往往会用到泛型,我们知道泛型的好处是在编译的时候检查类型安全&#xff0c;并且所有的强制转换都是自动和隐式的&#xff0c;代码的重用率高 然而有时候<method>的入参并不能直接强制转换成泛型的类型,比如说下面这段代码&#xff1a; 很明显String 类…

写给大数据开发初学者的话5

见&#xff1a;http://lxw1234.com/archives/2017/01/832.htm 至此&#xff0c;你的大数据平台底层架构已经成型了&#xff0c;其中包括了数据采集、数据存储与计算&#xff08;离线和实时&#xff09;、数据同步、任务调度与监控这几大模块。接下来是时候考虑如何更好的对外提…

3.spring boot Controller获取请求参数的值

2019独角兽企业重金招聘Python工程师标准>>> 1.获取连接中的参数,使用倒的关键词PathVariable RestController public class HelloController {RequestMapping(value "/hello/{id}",method RequestMethod.GET)public String index(PathVariable("i…

登录与注册

代码如下 private void btn_login_Click(object sender, EventArgs e){SqlConnection sqlconnection new SqlConnection();sqlconnection.ConnectionString ConfigurationManager.ConnectionStrings["SQL"].ConnectionString;SqlCommand sqlcommand new SqlComman…

三分钟明白 Activiti工作流 -- java运用

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、 什么是工作流 以请假为例&#xff0c;现在大多数公司的请假流程是这样的 员工打电话&#xff08;或网聊&#xff09;向上级提出请…

vue-i18n使用及踩坑记录

使用步骤 1. 安装 npm i vue-i18n 2. vue-cli下使用 //1. 引入 vue-i18n import Vue from vue import VueI18n from vue-i18n Vue.use(VueI18n)//2. 定义messages const messages {en: {text: {hello: hello world}},zh: {text: {hello: 你好、世界}} }//如果messages字段很多…

idea搭建web项目及tomcat部署总结

该文章为引用文章&#xff0c;原地址为&#xff1a;https://www.cnblogs.com/shindo/p/7272646.html 后面有我自己搭建过程中遇到的问题及解决方案&#xff0c;请参考。 一、创建简单web项目 1、创建一个web project File -> new Project ->选择project sdk 为1.6&#x…

Activiti工作流框架学习(一)环境的搭建和数据表的了解

一、什么是工作流 工作流(Workflow)&#xff0c;就是“业务过程的部分或整体在计算机应用环境下的自动化”&#xff0c;它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行&#xff0c;从而实现某个预期的业务目标&#xff0c;或者促使…

基础、语法都不是最重要的,学Python最重要的是什么?编程思路!

论述 一些朋友自学python过程中&#xff0c;发现书也能看懂&#xff0c;书上的玩具代码也能看懂&#xff0c;但为啥自己不能做习题&#xff0c;不能写代码解决问题&#xff0c;自己不能动手写代码&#xff1f; 原因 初学者没有学会计算思维、解决问题的方法、编程思路。编程思路…

Activiti工作流引擎的使用

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Activiti工作流引擎使用 1.简单介工作流引擎与Activiti 对于工作流引擎的解释请参考百度百科&#xff1a;工作流引擎 1.1 我与工作流引…

Flurry调查报告:图片和视频应用增长速度最快

据外国媒体报道&#xff0c;移动数据分析公司Flurry近期对应用分类的欢迎度进行研究后发现&#xff0c;就用户使用的时间而言&#xff0c;“图片和视频”应用已成为增长最快的移动应用。 Flurry对各种应用分类的800多万移动用户进行了调查&#xff0c;并利用其分析工具跟踪了1…

12-思科防火墙:ASA会话超时

一、实验拓扑&#xff1a;二、实验要求&#xff1a;DCD&#xff1a;死亡检测时间&#xff0c;默认R2 Telnet上去保持时间为1个小时&#xff0c;超时就会被清除掉&#xff0c;这里要求变为4小时&#xff0c;每15s就会发送5个DCD检测包&#xff0c;如没回应就剔除掉&#xff0c;回…