成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

利用setuptools發(fā)布Python程序到PyPI,為Python添磚加瓦

IntMain / 3097人閱讀

摘要:眾所周知的原因,國內(nèi)訪問國外網(wǎng)站總是不那么順暢,于是就有了鏡像,國內(nèi)有很多,我用過阿里云的,中科大的,豆瓣的。阿里云的同步的好像不夠及時,中科大的好像很及時,所以我就用中科大的。而通過可以指定當個文件作為包。

pip install的東西從哪里來的?

從PyPI (Python Package Index)來的,官網(wǎng)是: https://pypi.python.org/pypi/
執(zhí)行pip install terminaltranslator命令的時候,它就會去從官方網(wǎng)站搜terminaltranslator,搜到了就下載壓縮包并解壓安裝,如果沒有搜索到就會報錯。

眾所周知的原因,國內(nèi)訪問國外網(wǎng)站總是不那么順暢,于是就有了PyPI鏡像,國內(nèi)有很多,我用過阿里云的,中科大的,豆瓣的。阿里云的同步的好像不夠及時,中科大的好像很及時,所以我就用中科大的。那么,該怎么用這些鏡像呢?

方法1: 給pip加參數(shù)-i 后面跟鏡像的url,但是要記住并每次都寫這個url可是一件難事。
方法2: 編寫配置文件~/.pip/pip.conf:

[global]
index-url = https://mirrors.ustc.edu.cn/pypi/web/simple

如何把你自己的Python程序發(fā)布到PyPI上面去?

首先去官網(wǎng)注冊你的賬號,不能師出無名總得留下你的大名嘛。注冊地址:
https://pypi.python.org/pypi?...

注冊好后編寫你的配置文件~/.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

這里配置了兩個地址,一個是PyPI Live,是正式發(fā)布Python包的;另一個是PytPI Test 是用來正式發(fā)布之前驗證你的包是否正常。

準備好你的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 = "[email protected]",
  url = "https://github.com/veelion/mypackage", # 指向 github 倉庫的URL
  keywords = ["testing", "logging", "example"], # 一些關(guān)鍵詞
  classifiers = [],
)

setup可以從兩個包里面調(diào)來使用,一個是上面用的distutils,另外一個是setuptools,如:

from setuptools import setup

這兩個包功能基本一樣,而setuptools支持wheel(未來包管理的趨勢),所以一般用setuptools更好一些。再多說兩句wheel,它是用來準備替換老的egg的,其中很好的一個優(yōu)點是“二進制格式發(fā)布”,當包內(nèi)含有C/C++寫的擴展的時候可以把.so/.dll等二進制庫打包進去,實現(xiàn)“一次編譯,到處使用”的目標。省的用戶編譯時需要解決一堆依賴問題。

但是setuptools好像是不支持單文件包,即你的包只是一個.py文件而非上面說的是一個帶__init__.py我目錄。而distutils通過py_modules可以指定當個文件作為包。

上面說的是用setup.py管理Python包讓其他人import用,而非在命令行下指向。

而terminaltranslator 是一個命令行工具,可以在setup.py里面不指定package而是指定scripts來把相關(guān)文件安裝到bin目錄下:

if __name__ == "__main__":
    from setuptools import setup

    setup(
        name="TerminalTranslator",
        version="0.8",
        author="Veelion chong",
        author_email="[email protected]",
        license="MIT",
        url="https://github.com/veelion/tt",
        description=("Linux terminal translating tool implemented in Python"),
        scripts=["t", "tt", "terminaltranslator.py"],
    )

這里還用到一個小tip,把terminaltranslator.py 鏈接為t和tt兩個別名,這樣命令行下使用起來更方便。 不過,好像Windows下不支持Linux的軟鏈接,t和tt可能在Windows下出問題

發(fā)布到PyPI

首先,打包生成壓縮包

python setup.py sdist
python setup.py bdist_wheel (distutils不支持這個wheel選項)

上傳到PyPI:

python setup.py register #注冊你的包,如果出現(xiàn)與已有包重名則報錯
python setup.py upload
更新:在python3下面,python setup.py upload 已經(jīng)無效,官方推薦用 twine 上傳到pypi。

或者可以用twine (無需register,直接upload)

twine register dist/xxx.gz
twine register dist/xxx.whl
twine upload dist/*

文章來源于:猿人學網(wǎng)站的python教程。

版權(quán)申明:若沒有特殊說明,文章皆是猿人學原創(chuàng),沒有猿人學授權(quán),請勿以任何形式轉(zhuǎn)載。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/43728.html

相關(guān)文章

  • 如何在Pypi上發(fā)表自己的Python

    摘要:準備注冊賬號很顯然地要在上注冊一個賬號。最終的代碼結(jié)構(gòu)打包上傳在的同級目錄下運行以下命令。大功告成之后我們就可以在里搜索到自己的庫了,當然也可以直接通過安裝。 背景 最近興趣使然寫了幾個Python庫,也發(fā)布到了Pypi上,雖然沒什么人下載,但自己在其他機器上用著也會很方便。這里我向大家介紹一下如何在Pypi上發(fā)表自己的Python庫。 準備 注冊賬號 很顯然地要在Pypi上注冊一個...

    nihao 評論0 收藏0
  • 通過demo學習OpenStack開發(fā)所需的基礎(chǔ)知識 -- 軟件包管理

    摘要:不幸的是,在軟件包管理十分混亂,至少歷史上十分混亂。的最大改進是將函數(shù)的參數(shù)單獨放到一個的文件中這些成為包的元數(shù)據(jù)?;诘陌姹咎柟芾?。的版本推導(dǎo)這里重點說明一下基于的版本號管理這個功能。開發(fā)版本號的形式如下。 為什么寫這個系列 OpenStack是目前我所知的最大最復(fù)雜的基于Python項目。整個OpenStack項目包含了數(shù)十個主要的子項目,每個子項目所用到的庫也不盡相同。因此,對于...

    blastz 評論0 收藏0
  • 手把手教你發(fā)布一個Python

    摘要:本文主題如下編寫一個包源代碼,但不是本文的重點。發(fā)布包,發(fā)布的包可以有多種類型。查看為了生成和發(fā)布包,必須編寫文件,編寫該文件必須依賴于包,這個包本身也是一個包。編寫測試文件然后運行配置為了發(fā)布包,必須在注冊一個用戶,注冊郵箱需要驗證。 本文主題如下: 編寫一個包(Python 源代碼),但不是本文的重點。 編譯包,觀察編譯后的文件。 發(fā)布包,發(fā)布的包可以有多種類型。 如何在 Pypi...

    劉玉平 評論0 收藏0
  • Python 2.6 升級至 Python 2.7 的實踐心得

    摘要:前言安裝,因為軟件版本上的需求所以考慮將升級至,加上生產(chǎn)環(huán)境還是以為主,互聯(lián)網(wǎng)自動化運維平臺大多數(shù)也推薦以來操作,選擇還是也沒有定論,找到適合的搭配即可。 前言 CentOS 6.8 安裝 Python 2.7.13,因為軟件版本上的需求所以考慮將 Python 升級至 2.7.13,加上生產(chǎn)環(huán)境還是以 RHEL 6 為主,互聯(lián)網(wǎng)自動化運維平臺大多數(shù)也推薦以Python 2.7.x +...

    godlong_X 評論0 收藏0
  • python setup.py 淺析

    摘要:淺析參數(shù)說明對于所有列表里提到的純模塊做處理需要在腳本里有一個包名到目錄的映射。闡明包名到目錄的映射,見鍵代表了包的名字,空的包名則代表不在任何包中的頂層包。最終會在下生成可執(zhí)行文件,調(diào)用制定的函數(shù)實例分析 python setup.py 淺析 setuptools.setup() 參數(shù)說明 packages 對于所有 packages 列表里提到的純 Python 模塊做處理 需要...

    sevi_stuo 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<