摘要:眾所周知的原因,國(guó)內(nèi)訪問(wèn)國(guó)外網(wǎng)站總是不那么順暢,于是就有了鏡像,國(guó)內(nèi)有很多,我用過(guò)阿里云的,中科大的,豆瓣的。阿里云的同步的好像不夠及時(shí),中科大的好像很及時(shí),所以我就用中科大的。而通過(guò)可以指定當(dāng)個(gè)文件作為包。
pip install的東西從哪里來(lái)的?
從PyPI (Python Package Index)來(lái)的,官網(wǎng)是: https://pypi.python.org/pypi/
執(zhí)行pip install terminaltranslator命令的時(shí)候,它就會(huì)去從官方網(wǎng)站搜terminaltranslator,搜到了就下載壓縮包并解壓安裝,如果沒(méi)有搜索到就會(huì)報(bào)錯(cuò)。
眾所周知的原因,國(guó)內(nèi)訪問(wèn)國(guó)外網(wǎng)站總是不那么順暢,于是就有了PyPI鏡像,國(guó)內(nèi)有很多,我用過(guò)阿里云的,中科大的,豆瓣的。阿里云的同步的好像不夠及時(shí),中科大的好像很及時(shí),所以我就用中科大的。那么,該怎么用這些鏡像呢?
方法1: 給pip加參數(shù)-i 后面跟鏡像的url,但是要記住并每次都寫(xiě)這個(gè)url可是一件難事。
方法2: 編寫(xiě)配置文件~/.pip/pip.conf:
[global] index-url = https://mirrors.ustc.edu.cn/pypi/web/simple
如何把你自己的Python程序發(fā)布到PyPI上面去?
首先去官網(wǎng)注冊(cè)你的賬號(hào),不能師出無(wú)名總得留下你的大名嘛。注冊(cè)地址:
https://pypi.python.org/pypi?...
注冊(cè)好后編寫(xiě)你的配置文件~/.pypirc
[distutils] index-servers = pypi pypitest [pypi] repository=https://pypi.python.org/pypi username=Your-Account password=Your-Password [pypitest] repository=https://testpypi.python.org/pypi username=Your-Account password=Your-Password
這里配置了兩個(gè)地址,一個(gè)是PyPI Live,是正式發(fā)布Python包的;另一個(gè)是PytPI Test 是用來(lái)正式發(fā)布之前驗(yàn)證你的包是否正常。
準(zhǔn)備好你的Python包
通常你的代碼目錄結(jié)構(gòu)如下:
root-dir/ # 你的代碼的根目錄
setup.py setup.cfg LICENSE.txt README.md mypackage/ __init__.py foo.py bar.py baz.py
其中的setup.py就是安裝包的文件,格式如下:
from distutils.core import setup setup( name = "mypackage", packages = ["mypackage"], # 跟上面代碼目錄下面的包名一致 version = "0.1", description = "A setup test package", author = "veelion", author_email = "veelion@gmail.com", url = "https://github.com/veelion/mypackage", # 指向 github 倉(cāng)庫(kù)的URL keywords = ["testing", "logging", "example"], # 一些關(guān)鍵詞 classifiers = [], )
setup可以從兩個(gè)包里面調(diào)來(lái)使用,一個(gè)是上面用的distutils,另外一個(gè)是setuptools,如:
from setuptools import setup
這兩個(gè)包功能基本一樣,而setuptools支持wheel(未來(lái)包管理的趨勢(shì)),所以一般用setuptools更好一些。再多說(shuō)兩句wheel,它是用來(lái)準(zhǔn)備替換老的egg的,其中很好的一個(gè)優(yōu)點(diǎn)是“二進(jìn)制格式發(fā)布”,當(dāng)包內(nèi)含有C/C++寫(xiě)的擴(kuò)展的時(shí)候可以把.so/.dll等二進(jìn)制庫(kù)打包進(jìn)去,實(shí)現(xiàn)“一次編譯,到處使用”的目標(biāo)。省的用戶(hù)編譯時(shí)需要解決一堆依賴(lài)問(wèn)題。
但是setuptools好像是不支持單文件包,即你的包只是一個(gè).py文件而非上面說(shuō)的是一個(gè)帶__init__.py我目錄。而distutils通過(guò)py_modules可以指定當(dāng)個(gè)文件作為包。
上面說(shuō)的是用setup.py管理Python包讓其他人import用,而非在命令行下指向。
而terminaltranslator 是一個(gè)命令行工具,可以在setup.py里面不指定package而是指定scripts來(lái)把相關(guān)文件安裝到bin目錄下:
if __name__ == "__main__": from setuptools import setup setup( name="TerminalTranslator", version="0.8", author="Veelion chong", author_email="veelion@gmail.com", license="MIT", url="https://github.com/veelion/tt", description=("Linux terminal translating tool implemented in Python"), scripts=["t", "tt", "terminaltranslator.py"], )
這里還用到一個(gè)小tip,把terminaltranslator.py 鏈接為t和tt兩個(gè)別名,這樣命令行下使用起來(lái)更方便。 不過(guò),好像Windows下不支持Linux的軟鏈接,t和tt可能在Windows下出問(wèn)題
發(fā)布到PyPI
首先,打包生成壓縮包
python setup.py sdist python setup.py bdist_wheel (distutils不支持這個(gè)wheel選項(xiàng))
上傳到PyPI:
python setup.py register #注冊(cè)你的包,如果出現(xiàn)與已有包重名則報(bào)錯(cuò)
python setup.py upload
更新:在python3下面,python setup.py upload 已經(jīng)無(wú)效,官方推薦用 twine 上傳到pypi。
或者可以用twine (無(wú)需register,直接upload)
twine register dist/xxx.gz twine register dist/xxx.whl twine upload dist/*
文章來(lái)源于:猿人學(xué)網(wǎng)站的python教程。
版權(quán)申明:若沒(méi)有特殊說(shuō)明,文章皆是猿人學(xué)原創(chuàng),沒(méi)有猿人學(xué)授權(quán),請(qǐng)勿以任何形式轉(zhuǎn)載。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/43728.html
摘要:準(zhǔn)備注冊(cè)賬號(hào)很顯然地要在上注冊(cè)一個(gè)賬號(hào)。最終的代碼結(jié)構(gòu)打包上傳在的同級(jí)目錄下運(yùn)行以下命令。大功告成之后我們就可以在里搜索到自己的庫(kù)了,當(dāng)然也可以直接通過(guò)安裝。 背景 最近興趣使然寫(xiě)了幾個(gè)Python庫(kù),也發(fā)布到了Pypi上,雖然沒(méi)什么人下載,但自己在其他機(jī)器上用著也會(huì)很方便。這里我向大家介紹一下如何在Pypi上發(fā)表自己的Python庫(kù)。 準(zhǔn)備 注冊(cè)賬號(hào) 很顯然地要在Pypi上注冊(cè)一個(gè)...
摘要:不幸的是,在軟件包管理十分混亂,至少歷史上十分混亂。的最大改進(jìn)是將函數(shù)的參數(shù)單獨(dú)放到一個(gè)的文件中這些成為包的元數(shù)據(jù)?;诘陌姹咎?hào)管理。的版本推導(dǎo)這里重點(diǎn)說(shuō)明一下基于的版本號(hào)管理這個(gè)功能。開(kāi)發(fā)版本號(hào)的形式如下。 為什么寫(xiě)這個(gè)系列 OpenStack是目前我所知的最大最復(fù)雜的基于Python項(xiàng)目。整個(gè)OpenStack項(xiàng)目包含了數(shù)十個(gè)主要的子項(xiàng)目,每個(gè)子項(xiàng)目所用到的庫(kù)也不盡相同。因此,對(duì)于...
摘要:本文主題如下編寫(xiě)一個(gè)包源代碼,但不是本文的重點(diǎn)。發(fā)布包,發(fā)布的包可以有多種類(lèi)型。查看為了生成和發(fā)布包,必須編寫(xiě)文件,編寫(xiě)該文件必須依賴(lài)于包,這個(gè)包本身也是一個(gè)包。編寫(xiě)測(cè)試文件然后運(yùn)行配置為了發(fā)布包,必須在注冊(cè)一個(gè)用戶(hù),注冊(cè)郵箱需要驗(yàn)證。 本文主題如下: 編寫(xiě)一個(gè)包(Python 源代碼),但不是本文的重點(diǎn)。 編譯包,觀察編譯后的文件。 發(fā)布包,發(fā)布的包可以有多種類(lèi)型。 如何在 Pypi...
摘要:前言安裝,因?yàn)檐浖姹旧系男枨笏钥紤]將升級(jí)至,加上生產(chǎn)環(huán)境還是以為主,互聯(lián)網(wǎng)自動(dòng)化運(yùn)維平臺(tái)大多數(shù)也推薦以來(lái)操作,選擇還是也沒(méi)有定論,找到適合的搭配即可。 前言 CentOS 6.8 安裝 Python 2.7.13,因?yàn)檐浖姹旧系男枨笏钥紤]將 Python 升級(jí)至 2.7.13,加上生產(chǎn)環(huán)境還是以 RHEL 6 為主,互聯(lián)網(wǎng)自動(dòng)化運(yùn)維平臺(tái)大多數(shù)也推薦以Python 2.7.x +...
摘要:淺析參數(shù)說(shuō)明對(duì)于所有列表里提到的純模塊做處理需要在腳本里有一個(gè)包名到目錄的映射。闡明包名到目錄的映射,見(jiàn)鍵代表了包的名字,空的包名則代表不在任何包中的頂層包。最終會(huì)在下生成可執(zhí)行文件,調(diào)用制定的函數(shù)實(shí)例分析 python setup.py 淺析 setuptools.setup() 參數(shù)說(shuō)明 packages 對(duì)于所有 packages 列表里提到的純 Python 模塊做處理 需要...
閱讀 1908·2021-09-28 09:43
閱讀 1208·2021-09-23 11:22
閱讀 2827·2021-09-14 18:05
閱讀 1888·2019-08-30 15:52
閱讀 2886·2019-08-30 10:55
閱讀 2104·2019-08-29 16:58
閱讀 1464·2019-08-29 16:37
閱讀 3112·2019-08-29 16:25