python如何發(fā)布自已pip項目的方法步驟
前言
因為自已平時會把一個常用到邏輯寫成一個工具python腳本,像關(guān)于時間字符串處理,像關(guān)于路徑和文件夾遍歷什么的工具。每一次新建一個項目的時候都要把這些工具程序復(fù)制到每個項目中,換一個電腦后還要從github生新下載后再復(fù)制到項目中,實在太麻煩。最后想想,還是建一個自已的pip項目會比較好。
環(huán)境準(zhǔn)備
要用 pip 發(fā)布 python 程序,首先當(dāng)然是要安裝 Python 和 pip 這兩個軟件了,以 Ubuntu 16.04 為例:
$ sudo apt update $ sudo apt install -y python python-pip
CentOS 和 RedHat 因為 RPM 體系需要依賴于 python,更是默認(rèn)就安裝好了。
另外發(fā)布 Pypi,還需要安裝一個發(fā)布工具, twine ,以及其所依賴的 setuptools、wheel:
$ sudo pip install --upgrade twine setuptools wheel
好,到這環(huán)境就已經(jīng)就緒了。
第一步:注冊一個PyPi帳號
在上邊的注冊網(wǎng)站上注冊一個自已的帳號,注冊好后在郵箱激活,一般注冊流程都是這么操作了,這里就不多說了。
第二步:在github上創(chuàng)建一個項目
如果你還沒有使用過github源碼托管網(wǎng)站,可以先注冊一個github的帳戶再創(chuàng)建項目,我一般創(chuàng)建項目用的是官網(wǎng)提供的桌面工具Github Desktop.
Github Desktop的下載地址:https://desktop.github.com
github注冊和創(chuàng)建新項目,這里也不說了,程序員的基本功。
第三步:編寫自已的python項目
我這里只有一個timetool.py和pathtool.py兩個文件
詳情可以查看我的示例項目: https://github.com/fengmm521/pipProject
先建一個目錄,比如magetool,這個里邊放的是你的項目代碼
在這個magetool目錄里,新建一個__init__.py,這個文件里可以什么都不用寫,然后就是你要發(fā)布的.py文件
第四步:編寫setup.py文件
這里重點說明一下這個setup.py文件,因為整個pip項目的發(fā)布和上傳都是基于這個setup.py文件完成的。
大家可以看一下我示例項目的setup.py是怎么寫的,其實我也是從網(wǎng)上下載別人寫好的。
#!/usr/bin/env python #-*- coding:utf-8 -*- ############################################# # File Name: setup.py # Author: mage # Mail: mage@woodcol.com # Created Time: 2018-1-23 19:17:34 ############################################# from setuptools import setup, find_packages setup( name = "magetool", version = "0.1.0", keywords = ("pip", "pathtool","timetool", "magetool", "mage"), description = "time and path tool", long_description = "time and path tool", license = "MIT Licence", url = "https://github.com/fengmm521/pipProject", author = "mage", author_email = "mage@woodcol.com", packages = find_packages(), include_package_data = True, platforms = "any", install_requires = [] )
setup.py中重要的參數(shù)有5個:
1.name
name = “magetool”,這個name參數(shù)后邊的就是你的項目代碼所在目錄,也是你pip要上傳的項目名稱,其他人用pip install xxx來安裝時,后邊的xxx就是你的這個magetool
2.version
version = “0.1.0”,你工具的版本號,后期你工具更新了,要用pip來更新包的時候,會更新比當(dāng)前版本號高的新版本。
下邊是pip 更新包的命令
pip install --upgrade <包的名字> pip install -U <包的名字>12
3.packages
packages = find_packages(),這個參數(shù)是導(dǎo)入目錄下的所有__init__.py包
4.install_requires
install_requires = [],這是一個數(shù)組,里邊包含的是咱的pip項目引用到的第三方庫,如果你的項目有用到第三方庫,要在這里添上第三方庫的包名,如果用的第三方版本不是最新版本,還要有版本號。
第五步:打包自已的項目
在代碼編寫完成,自已測試后沒有問題了,就可以打包了。
打包使用下邊兩個命令:
我使用的是第二個
$ python setup.py bdist_egg # 生成類似 edssdk-0.0.1-py2.7.egg,支持 easy_install $ python setup.py sdist # 生成類似 edssdk-0.0.1.tar.gz,支持 pip12
兩個命令打包好之后都會生成build和dist兩個目錄,打包的文件會放在dist目錄下,供后邊上傳到PyPi服務(wù)器
第六步:上傳到PyPi服務(wù)器
在上傳前,要建一個文件,$HOME/.pypirc,$HOME目錄在linux或者mac系統(tǒng)下就是~/目錄。在這里建一個.pypirc文件。里邊的內(nèi)容如下:
[distutils] index-servers = pypi [pypi] username:你的PyPi用戶名 password:你的PyPi密碼 ~
因為不能使用python setup.py register進(jìn)行上傳,使用這個上傳會報一個410的錯誤。所以要使用.pypirc文件保存你的PyPi用戶信息,這時使用下載的twine就可以直接上傳了。
在別的地方找到的有說上傳用python setup.py sdist upload命令,但在我這里用這個命令也會一直失敗,所以我用下邊的命令上傳打包好的pip項目,我上傳的是用第五步的,python setup.py sdist命令打包好的項目,
上傳好打包的pip安裝包:
twine upload dist/magetool-0.1.0.tar.gz1
第七步:使用pip安裝剛剛上傳的包
pip安裝包我這里就不多說了,這個一般用python的都會的
用pip安裝上傳的包:
pip install magetool --user
–user參數(shù)的意思是安裝給當(dāng)電腦的當(dāng)前用戶,要不然會要求系統(tǒng)管理員權(quán)限才能安裝。加了–user之后就不用sudo的管理員權(quán)限了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python人工智能tensorflow函數(shù)np.random模塊使用
這篇文章主要為大家介紹了python人工智能tensorflow函數(shù)np.random模塊使用方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Python爬蟲程序架構(gòu)和運(yùn)行流程原理解析
這篇文章主要介紹了Python爬蟲程序架構(gòu)和運(yùn)行流程原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03PyTorch中torch.tensor()和torch.to_tensor()的區(qū)別
在Pytorch中Tensor和tensor都用于生成新的張量,但二者并不相同,下面這篇文章主要給大家介紹了關(guān)于PyTorch中torch.tensor()和torch.to_tensor()區(qū)別的相關(guān)資料,需要的朋友可以參考下2023-01-01PyCharm MySQL可視化Database配置過程圖解
這篇文章主要介紹了PyCharm MySQL可視化Database配置過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06關(guān)于Python網(wǎng)絡(luò)爬蟲requests庫的介紹
這篇文章主要介紹了關(guān)于Python網(wǎng)絡(luò)爬蟲requests庫,而很多時候這些數(shù)據(jù)存儲在網(wǎng)頁中,手動下載需要花費(fèi)的時間太長,這時候我們就需要網(wǎng)絡(luò)爬蟲幫助我們自動爬取這些數(shù)據(jù),需要的朋友可以參考下2023-04-04