python如何發(fā)布自已pip項(xiàng)目的方法步驟
前言
因?yàn)樽砸哑綍r(shí)會(huì)把一個(gè)常用到邏輯寫成一個(gè)工具python腳本,像關(guān)于時(shí)間字符串處理,像關(guān)于路徑和文件夾遍歷什么的工具。每一次新建一個(gè)項(xiàng)目的時(shí)候都要把這些工具程序復(fù)制到每個(gè)項(xiàng)目中,換一個(gè)電腦后還要從github生新下載后再?gòu)?fù)制到項(xiàng)目中,實(shí)在太麻煩。最后想想,還是建一個(gè)自已的pip項(xiàng)目會(huì)比較好。
環(huán)境準(zhǔn)備
要用 pip 發(fā)布 python 程序,首先當(dāng)然是要安裝 Python 和 pip 這兩個(gè)軟件了,以 Ubuntu 16.04 為例:
$ sudo apt update $ sudo apt install -y python python-pip
CentOS 和 RedHat 因?yàn)?RPM 體系需要依賴于 python,更是默認(rèn)就安裝好了。
另外發(fā)布 Pypi,還需要安裝一個(gè)發(fā)布工具, twine ,以及其所依賴的 setuptools、wheel:
$ sudo pip install --upgrade twine setuptools wheel
好,到這環(huán)境就已經(jīng)就緒了。
第一步:注冊(cè)一個(gè)PyPi帳號(hào)
在上邊的注冊(cè)網(wǎng)站上注冊(cè)一個(gè)自已的帳號(hào),注冊(cè)好后在郵箱激活,一般注冊(cè)流程都是這么操作了,這里就不多說(shuō)了。
第二步:在github上創(chuàng)建一個(gè)項(xiàng)目
如果你還沒(méi)有使用過(guò)github源碼托管網(wǎng)站,可以先注冊(cè)一個(gè)github的帳戶再創(chuàng)建項(xiàng)目,我一般創(chuàng)建項(xiàng)目用的是官網(wǎng)提供的桌面工具Github Desktop.
Github Desktop的下載地址:https://desktop.github.com
github注冊(cè)和創(chuàng)建新項(xiàng)目,這里也不說(shuō)了,程序員的基本功。
第三步:編寫自已的python項(xiàng)目
我這里只有一個(gè)timetool.py和pathtool.py兩個(gè)文件
詳情可以查看我的示例項(xiàng)目: https://github.com/fengmm521/pipProject
先建一個(gè)目錄,比如magetool,這個(gè)里邊放的是你的項(xiàng)目代碼
在這個(gè)magetool目錄里,新建一個(gè)__init__.py,這個(gè)文件里可以什么都不用寫,然后就是你要發(fā)布的.py文件
第四步:編寫setup.py文件
這里重點(diǎn)說(shuō)明一下這個(gè)setup.py文件,因?yàn)檎麄€(gè)pip項(xiàng)目的發(fā)布和上傳都是基于這個(gè)setup.py文件完成的。
大家可以看一下我示例項(xiàng)目的setup.py是怎么寫的,其實(shí)我也是從網(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個(gè):
1.name
name = “magetool”,這個(gè)name參數(shù)后邊的就是你的項(xiàng)目代碼所在目錄,也是你pip要上傳的項(xiàng)目名稱,其他人用pip install xxx來(lái)安裝時(shí),后邊的xxx就是你的這個(gè)magetool
2.version
version = “0.1.0”,你工具的版本號(hào),后期你工具更新了,要用pip來(lái)更新包的時(shí)候,會(huì)更新比當(dāng)前版本號(hào)高的新版本。
下邊是pip 更新包的命令
pip install --upgrade <包的名字> pip install -U <包的名字>12
3.packages
packages = find_packages(),這個(gè)參數(shù)是導(dǎo)入目錄下的所有__init__.py包
4.install_requires
install_requires = [],這是一個(gè)數(shù)組,里邊包含的是咱的pip項(xiàng)目引用到的第三方庫(kù),如果你的項(xiàng)目有用到第三方庫(kù),要在這里添上第三方庫(kù)的包名,如果用的第三方版本不是最新版本,還要有版本號(hào)。
第五步:打包自已的項(xiàng)目
在代碼編寫完成,自已測(cè)試后沒(méi)有問(wèn)題了,就可以打包了。
打包使用下邊兩個(gè)命令:
我使用的是第二個(gè)
$ 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
兩個(gè)命令打包好之后都會(huì)生成build和dist兩個(gè)目錄,打包的文件會(huì)放在dist目錄下,供后邊上傳到PyPi服務(wù)器
第六步:上傳到PyPi服務(wù)器
在上傳前,要建一個(gè)文件,$HOME/.pypirc,$HOME目錄在linux或者mac系統(tǒng)下就是~/目錄。在這里建一個(gè).pypirc文件。里邊的內(nèi)容如下:
[distutils] index-servers = pypi [pypi] username:你的PyPi用戶名 password:你的PyPi密碼 ~
因?yàn)椴荒苁褂胮ython setup.py register進(jìn)行上傳,使用這個(gè)上傳會(huì)報(bào)一個(gè)410的錯(cuò)誤。所以要使用.pypirc文件保存你的PyPi用戶信息,這時(shí)使用下載的twine就可以直接上傳了。
在別的地方找到的有說(shuō)上傳用python setup.py sdist upload命令,但在我這里用這個(gè)命令也會(huì)一直失敗,所以我用下邊的命令上傳打包好的pip項(xiàng)目,我上傳的是用第五步的,python setup.py sdist命令打包好的項(xiàng)目,
上傳好打包的pip安裝包:
twine upload dist/magetool-0.1.0.tar.gz1
第七步:使用pip安裝剛剛上傳的包
pip安裝包我這里就不多說(shuō)了,這個(gè)一般用python的都會(huì)的
用pip安裝上傳的包:
pip install magetool --user
–user參數(shù)的意思是安裝給當(dāng)電腦的當(dāng)前用戶,要不然會(huì)要求系統(tǒng)管理員權(quán)限才能安裝。加了–user之后就不用sudo的管理員權(quán)限了。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python使用pika庫(kù)調(diào)用rabbitmq參數(shù)使用詳情
這篇文章主要介紹了python使用pika庫(kù)調(diào)用rabbitmq參數(shù)使用詳情,文章通過(guò)展開文章主題分享了三種方式,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-08-08
用Python進(jìn)行屏幕錄制的實(shí)現(xiàn)
關(guān)于屏幕錄制這個(gè)功能需求,之前用過(guò)基于ffmpeg的Capture錄屏軟件,但是fps拉高以后會(huì)變得很卡,聲音也同樣出現(xiàn)卡頓,所以本文給大家介紹了用Python進(jìn)行屏幕錄制的實(shí)現(xiàn),感興趣的朋友可以參考下2024-04-04
python如何實(shí)現(xiàn)常用的五種排序算法詳解
排序有很多種實(shí)現(xiàn)方法,比如冒泡排序、選擇排序、歸并排序、希爾排序、快速排序、插入排序、堆排序、基數(shù)排序等,這篇文章主要給大家介紹了關(guān)于python如何實(shí)現(xiàn)常用的五種排序算法,需要的朋友可以參考下2021-08-08
Python 安裝 virturalenv 虛擬環(huán)境的教程詳解
這篇文章主要介紹了Python 安裝 virturalenv 虛擬環(huán)境的教程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02
python實(shí)現(xiàn)列車管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)列車管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09
詳解Python中的相對(duì)導(dǎo)入和絕對(duì)導(dǎo)入
絕對(duì)導(dǎo)入是指跳過(guò)包內(nèi),直接搜索 sys.path ,在sys.path的基礎(chǔ)上進(jìn)行我們的模塊搜索。相對(duì)導(dǎo)入是指先包內(nèi),再包外,再,,,那么下面這篇文章主要給大家介紹了Python中的相對(duì)導(dǎo)入和絕對(duì)導(dǎo)入,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-01-01
Python實(shí)現(xiàn)刪除列表首元素的多種方式總結(jié)
在Python中,處理列表的操作是日常開發(fā)中不可避免的任務(wù)之一,其中,刪除列表中的元素是一個(gè)常見(jiàn)的需求,本文為大家整理了Python中刪除列表中的第一個(gè)元素的多種方法,需要的可以參考下2023-12-12

