您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關利用pip怎么發布一個Python程序,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
1. 環境準備
要用 pip 發布 python 程序,首先當然是要安裝 Python 和 pip 這兩個軟件了,以 Ubuntu 16.04 為例:
$ sudo apt update $ sudo apt install -y python python-pip
CentOS 和 RedHat 因為 RPM 體系需要依賴于 python,更是默認就安裝好了。
另外發布 Pypi,還需要安裝一個發布工具, twine ,以及其所依賴的 setuptools、wheel:
$ sudo pip install --upgrade twine setuptools wheel
好,到這環境就已經就緒了。
2. 注冊帳號
pip 上傳代碼包是最終保存在 https://pypi.org 這個網站上的,所以要用 pip 發布程序,就需要在這個網站上注冊一個帳號。
訪問該網址進行注冊: https://pypi.org/account/register/
注冊后還需要進行郵箱驗證,流程和普通網站沒有任何區別,所以具體步驟就不在這里詳細介紹了。
3. 代碼結構
要發布 Python 程序,程序的結構必須符合特定的要求,假設要發布的程序名為 example-pkg,基本的目錄結構如下:
/example-pkg /example-pkg __init__.py setup.py LICENSE README.md
說一下目錄和文件的含義:
首先最外層要建立一個和發出程序同名的文件夾: /example-pkg
該文件夾下還要再簡歷一個同名文件夾,用來存放程序代碼: /example-pkg/example-pkg
Python 的老規矩,example-pkg/example-pkg 目錄下當然要有一個 __init__.py
文件。
/example-pkg 目錄下要有一個叫 setup.py 的文件,如果下載過 Python 代碼包,應該都知道這個文件,需要通過這個文件進行 Python 代碼的編譯(可能會有依賴的其他代碼包或者依賴的 C 文件)和安裝。
LICENSE 文件:這個文件就是用來保存代碼所使用的開源許可證。
README.md:這個是軟件行業的慣例了,幫助文檔。
對于 setup.py 文件,還有必要好好說說,先貼個例子,下面這個例子中,主要是實現了從 /example-pkg/example-pkg/__init__.py
文件中讀取 version 參數,來配置當前軟件的版本,并指定了代碼包名(name)、作者(author)、郵箱(author_email)、描述信息(long_description、long_description_content_type)、依賴(install_requires),以及哪些文件不會被打包到程序中(exclude_package_data)。
另外需要提醒大家一點, 給程序起名字不要帶下劃線(_) ,python import 代碼包時,是不支持下劃線包名的,出現這種情況就比較尷尬,代碼裝上了,還是用不了。
#!/usr/bin/env python import re import setuptools version = "" with open('example-pkg/__init__.py', 'r') as fd: version = re.search(r'^__version__\s*=\s*[\'"]([^\'"]*)[\'"]', fd.read(), re.MULTILINE).group(1) with open("README.md", "r") as fh: long_description = fh.read() setuptools.setup( name="example-pkg", version=version, author="example", author_email="author@example.com", description="This is the SDK for example.", long_description=long_description, long_description_content_type="text/markdown", url="http://example.com", install_requires=[ 'requests!=2.9.0', 'lxml>=4.2.3', 'monotonic>=1.5', ], packages=setuptools.find_packages(exclude=("test")), classifiers=( "License :: OSI Approved :: MIT License", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5" ), exclude_package_data={'': ["example-pkg/test.py", "example-pkg/config.txt"]}, )
4. 上傳和檢查
一切準備就緒,下面就可以執行打包命令,產生要上傳的代碼包了:
$ python setup.py sdist bdist_wheel
執行結束后,會產生如下目錄和文件:
/example-pkg/dist/ example-pkg-0.0.1-py3-none-any.whl example-pkg-0.0.1.tar.gz
包有了,就差上傳了,執行第一步中安裝的 twine 命令:
$ twine upload dist/* Uploading distributions to https://upload.pypi.org/legacy/ Enter your username: <your pypi.org username> Enter your password: <your pypi.org password> Uploading example-pkg-0.0.1-py3-none-any.whl 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 45.0k/45.0k [00:01<00:00, 24.0kB/s] Uploading example-pkg-0.0.1.tar.gz 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 43.8k/43.8k [00:00<00:00, 46.2kB/s]
上傳完畢!不過這里有一點需要注意,上傳新版本后,很可能 pip search
還沒法查到版本的更新,這是正常的,我理解是
pip search
命令依賴于緩存,所以不會立刻生效。
接下來就讓我們下載自己剛剛上傳的 python 試試吧:
$ pip install example-pkg $ python >>> import example-pkg >>> example-pkg.name 'example-pkg'
最后再補充一點,上傳可能會失敗,提示無法上傳指定的代碼包,此時很大的可能是 pypi 中已經有了相同的代碼包,所以建議在上傳之前,先搜索一下是否有重名的代碼包,選擇一個不沖突的名字,再上傳。
例如下面這個例子,example-pkg 已經存在了,如果要再上傳,那當然會失敗,換個名字就解決了。
$ pip search example-pkg example-pkg (0.0.7) - A small example package ......
上述就是小編為大家分享的利用pip怎么發布一個Python程序了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。