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.pswp.cn/news/451317.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/451317.shtml
英文地址,請注明出處:http://en.pswp.cn/news/451317.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux系統C語言學習總結

引言   盡管 C 語言問世已近 30 年,但它的魅力仍未減退。C 語言繼續吸引著眾多的開發者,他們為了編寫、移植或維護應用程序而必須學習新技能。   本文是為了滿足對C語言初學者或想提高自身C語言修為的開發人員的需要而寫的。希望對您的學習和工作有…

redis 刪除操作

Redis 鍵(key) Redis 鍵命令用于管理 redis 的鍵。 語法 Redis 鍵命令的基本語法如下: redis 127.0.0.1:6379> COMMAND KEY_NAME 實例 redis 127.0.0.1:6379> SET runoobkey redis OK redis 127.0.0.1:6379> DEL runoobkey (integer) 1 在以上實例中 DEL 是…

寫給大數據開發初學者的話2

見 : http://lxw1234.com/archives/2016/11/782.htm 如果你已經按照《寫給大數據開發初學者的話》中第一章和第二章的流程認真完整的走了一遍,那么你應該已經具備以下技能和知識點: 0和Hadoop2.0的區別;MapReduce的原理(還是那個…

Pandas的結構和應用

Pandas處理以下三個數據結構 - 系列(Series)----一維ndarray   特點:帶有標簽,可以使用標簽作為索引,大小不能改變,內部數據可以改變。 屬性:與NumPy類似,多了一個軸標簽axis lables 數據…

JZOJ5857 【NOIP提高組模擬A組2018.9.8】沒有上司的舞會

題目 Description “那么真的有果爾德施坦因這樣一個人?”他問道。 “是啊,有這樣一個人,他還活著。至于在哪里,我就不知道了。” “那么那個密謀——那個組織?這是真的嗎?不是秘密警察的捏造吧?” “不是,這是真的。我們管…

python 中如何判斷list中是否包含某個元素

在python中可以通過in和not in關鍵字來判讀一個list中是否包含一個元素 theList [‘a’,’b’,’c’] if ‘a’ in theList: print ‘a in the list’ if ‘d’ not in theList: print ‘d is not in the list’

時間即財富:創業者浪費精力的八個錯誤

導讀:本文作者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層的負…

LeetCode--171--Excel表列序號

問題描述: 給定一個Excel表格中的列名稱,返回其相應的列序號。 例如, A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 ...示例 1: 輸入: "A" 輸出: 1示例 2: 輸入: "AB" 輸出: 28示例 3: 輸入: "…

中國歷代王朝大排名

中國自秦以降,一共出過九個大王朝,它們是:秦、漢、晉、隋、唐、宋、元、明、清。另外,還出過五十幾個小王朝,它們是: 三國時的魏、蜀、吳,共三個; [ 轉自鐵血社區 http://bbs.tiexue…

寫給大數據開發初學者的話4

見:http://lxw1234.com/archives/2016/11/795.htm 如果你已經按照《寫給大數據開發初學者的話3》中第五章和第六章的流程認真完整的走了一遍,那么你應該已經具備以下技能和知識點: 為什么Spark比MapReduce快。使用SparkSQL代替Hive&#xff…

TPS及計算方法

TPS (transaction per second)代表每秒執行的事務數量,可基于測試周期內完成的事務數量計算得出。例如,用戶每分鐘執行6個事務,TPS為6 / 60s 0.10 TPS。同時我們會知道事務的響應時間(或節拍),以此例,60秒完成6個事務…

域名解析服務之DNS查詢類型

在實際應用中DNS查詢主要分為兩種方式查詢:1.遞歸查詢;2.迭代查詢 一般情況下:為了減少資源的消耗,網絡中客戶端與所屬的本地DNS服務器查詢方式通常為遞歸查詢,本地DNS服務器與外部的公共DNS服務器間的查詢方式為迭代查…

MFC Ribbon界面設計

Ribbon是類似于office2007樣式的界面,它替代了傳統的MFC程序里的菜單和工具欄 MFC默認生成的Ribbon功能少,需要我們自己添加一些控件和圖片等元素使界面好看 看下面的一個界面,是VC2010示例里的 看到它與默認Ribbon樣式的區別: 工…

互聯網手機躁動:“周大炮”追逐“雷布斯”

摘要:周鴻祎選擇非自有品牌補貼,可能是看到了小米初期的艱難,也想追求速度,繞開自制手機終端環節。于小米而言,需要解決后續機型承接、持續穩定提升產能;對360而言,需要投入巨量補貼資金&#x…

獲取泛型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…

斷開的管道 java.io.IOException: Broken pipe 解決方法

斷開的管道 java.io.IOException: Broken pipe 解決方法一、Broken pipe產生原因分析1.當訪問某個服務突然服務器掛了&#xff0c;就會產生Broken pipe;2.客戶端讀取超時關閉了連接&#xff0c;這時服務器往客戶端再寫數據就發生了broken pipe異常&#xff01;二、方案1.問題一…