自作pip包流程詳解

自作pip包流程詳解

1. 配置環(huán)境
主要是需要安裝Python版本在3.4以上,安裝pip工具,并確保pip,setuptools和wheel是最新的,一般滿足條件。也可以用以下指令更新以下:

成都創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網站設計、做網站、企業(yè)官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯(lián)網時代的福安網站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!

python -m pip install --upgrade pip setuptools wheel

詳情見官網鏈接

2.制作pip包
1)創(chuàng)建工程文件目錄及文件
在目錄內分別新建LICENCE、README.md(markdown文件)、requirements.txt、setup.py(鏈接大神的配置模板)文件,注意文件尾綴。其中setup.py可以自己編寫,可以根據超鏈接下載自己改寫,也可以復制,指令:(git clone https://github.com/kennethreitz/setup.py) 復制后在網上修改。

所建目錄及文件詳見下圖:
自作pip包流程詳解
setup.py中參數配置
樣例代碼:
from futureimport print_function
from setuptools import setup, find_packages
import sys

setup(
name="utilsss",
version="0.1.3",
author="vip", #author_email="huhongping123@163.com",
br/>author_email="huhongping123@163.com",
description="vip Python lib Framework.",
license="MIT",
url="https://github.com/huhongping/vip_utils",
packages=find_packages(),
include_package_data=True,

install_requires=[

],
zip_safe=True,

)
重要參數解釋:
1.name
name = “utilsss”,這個name參數后邊的就是你的項目代碼所在目錄,也是你pip要上傳的項目名稱,其他人用pip install xxx來安裝時,后邊的xxx就是你的這個magetool

2.version
version = “0.1.0”,你工具的版本號,后期你工具更新了,要用pip來更新包的時候,會更新比當前版本號高的新版本。

下邊是pip 更新包的命令

pip install --upgrade <包的名字>
pip install -U <包的名字>

3.packages
packages = find_packages(),這個參數是導入目錄下的所有init.py包

4.install_requires
install_requires = [],這是一個數組,里邊包含的是咱的pip項目引用到的第三方庫,如果你的項目有用到第三方庫,要在這里添上第三方庫的包名,如果用的第三方版本不是最新版本,還要有版本號。

更多參數詳解如下:

參數說明備注
name 包名稱
version 包版本
author 程序的作者
author_email 程序的作者的郵箱地址
maintainer 維護者
maintainer_email 維護者的郵箱地址
url 程序的官網地址
license 程序的授權信息
description 程序的簡單描述
long_description 程序的詳細描述
platforms 程序適用的軟件平臺列表
classifiers 程序的所屬分類列表
keywords 程序的關鍵字列表
packages 需要處理的包目錄(通常為包含 init.py 的文件夾)
py_modules 需要打包的 Python 單文件列表
download_url 程序的下載地址
cmdclass 添加自定義命令
package_data 指定包內需要包含的數據文件
include_package_data 自動包含包內所有受版本控制(cvs/svn/git)的數據文件
exclude_package_data 當 include_package_data 為 True 時該選項用于排除部分文件
data_files 打包時需要打包的數據文件,如圖片,配置文件等
ext_modules 指定擴展模塊
scripts 指定可執(zhí)行腳本,安裝時腳本會被安裝到系統(tǒng) PATH 路徑下
package_dir 指定哪些目錄下的文件被映射到哪個源碼包
requires 指定依賴的其他包
provides 指定可以為哪些模塊提供依賴
install_requires 安裝時需要安裝的依賴包
entry_points 動態(tài)發(fā)現(xiàn)服務和插件,下面詳細講
setup_requires 指定運行 setup.py 文件本身所依賴的包
dependency_links 指定依賴包的下載地址
extras_require 當前包的高級/額外特性需要依賴的分發(fā)包
zip_safe 不壓縮包,而是以目錄的形式安裝

2)編寫核心代碼
在工程目錄下新建一個utilsss的package,默認自帶一個init.py文件,即調用該包就自動執(zhí)行該文件。然后在包里面新建一個自己想要擁有的函數。
接下來我們就可以編寫自己的代碼了,要注意源代碼文件夾(倉庫里的my_package文件夾)的名字與setup.py里配置的包名(Name)要一致。
另外在重新上傳之前我們要修改version.py里的版本號,以免覆蓋了以前的上傳(相信會有人是需要之前版本的庫的)。
本目錄包含文件:
core.py
init.py
version.py(非必須)

3.打包項目
在代碼編寫完成,自已測試后沒有問題了,就可以打包了。
命令窗口輸入:
$ python setup.py sdist # 生成類似 utilsss-0.1.3.tar.gz,支持 pip

經過以上步驟已經可以生成一個pip可安裝的工程包,安裝非常簡單。
直接在命令窗口輸入:

pip install .\dist\utilsss-0.1.3.tar.gz

4.上傳到PyPi服務器

1)創(chuàng)建 PyPI賬號
非常簡單,直接通過官網注冊 https://pypi.python.org/pypi?..., 但是需要驗證郵件并確認激活。
之前我在pypi注冊時弄了雙因素驗證(解釋),有需要的同學,可以弄個,加強賬號安全。
2)創(chuàng)建用戶驗證文件 ~/.pypirc
在自己的用戶目錄下新建一個空白文件命名為.pypirc,內容如下:

[distutils]
index-servers=pypi

[pypi]
repository = https://upload.pypi.org/legacy/
username = <username>
password = <password>

3)用戶名和密碼就是上一步驟所創(chuàng)建的,直接明文輸入。如果你覺得明文密碼不安全也可以留空,在后面的上傳過程中會提示你手動輸入。

注冊你的包
你需要到PyPI注冊并驗證你的包,之后才能開始真正上傳,注冊的方式有以下幾種。

使用命令python setup.py register,最簡單但官網不推薦,因為使用的是HTTP未加密,有可能會被***人嗅探到你的密碼。
通過PyPI網站提交表單完成注冊驗證。
安裝 pip install twine 然后在通過命令 twine register dist/mypkg.whl 完成注冊。
4)上傳并完成發(fā)布
正常情況下,直接使用第一條命令即可,也可以使用tuine這個第三方較為安全的提交方式。

使用命令:python setup.py sdist upload,還是和上面一樣,簡單但有安全隱患,目前已淘汰。
使用 twine: twine upload dist/*

可能遇到的錯誤

Upload failed (403): Invalid or non-existent authentication information.
錯誤的用戶驗證信息,你需要創(chuàng)建一個用戶驗證文件 ~/.pypirc。請參閱上文。

Upload failed (403): You are not allowed to edit 'xxx' package information
你需要先注冊你的包才可以開始上傳,運行注冊命令:python setup.py register

Server response (401): Incomplete registration; check your email
你的PyPI賬戶還沒完成郵箱驗證,你需要去注冊郵箱找到一封驗證郵件完成驗證后再重試失敗的步驟。

Server response (400): Invalid classifier "Topic :: Software Development :: Utilities"
你的setup.py文件中的classifier信息有誤,請按官網的正確分類書寫classifier.

error: No dist file created in earlier command
你還沒打包就開始了上傳命令,建議打包和上傳的操作放在一起做,比如:

python setup sdist upload
error: Upload failed (499): Client Disconnected
這應該是網絡問題,多重試幾次。

Upload failed (400): File already exists
文件已經存在了,你每一次上次都應該更新版本號。

官網參考文檔
https://packaging.python.org/...

(后續(xù)會繼續(xù)補充完善使更加容易明白操作)

文章名稱:自作pip包流程詳解
瀏覽地址:http://muchs.cn/article28/ipjgjp.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供面包屑導航、域名注冊企業(yè)網站制作、自適應網站、網站制作、云服務器

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

商城網站建設