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

資訊專欄INFORMATION COLUMN

devpi 快速入門(mén): 上傳, 測(cè)試, 推送發(fā)行版

fjcgreat / 2146人閱讀

摘要:命令配置一個(gè)調(diào)用,使用在索引上的與兼容的頁(yè)來(lái)尋找和下載包?,F(xiàn)在我們切回然后尋找我們的發(fā)行文件我們看到被包含在兩個(gè)索引中,讓我們移除的發(fā)行版如果你沒(méi)有指定選項(xiàng),你將被詢問(wèn)確認(rèn)刪除的交互式操作。

  

注:該文的原文是 Quickstart: uploading, testing, pushing releases,來(lái)自于 devpi 的官方文檔。

該快速入門(mén)文檔將引導(dǎo)你為你的 Python 包設(shè)置完成一個(gè)獨(dú)立的 pypi 發(fā)布上傳,測(cè)試和 staging 系統(tǒng)。

安裝 devpi 客戶端和服務(wù)器端

我想在我的筆記本上運(yùn)行完整的 devpi 系統(tǒng):

pip install -U devpi

這將安裝 devpi-clientdevpi-server 這兩個(gè) pypi 包。

devpi quickstart:初始化基本場(chǎng)景

devpi quickstart 命令在你本地機(jī)器上執(zhí)行一些基礎(chǔ)的初始化步驟:

啟動(dòng)一個(gè)后臺(tái)的 devpi-server,通過(guò) http://localhost:3141 訪問(wèn)

配置客戶端工具 devpi 來(lái)連接最新啟動(dòng)的 devpi 服務(wù)

創(chuàng)建和登陸一個(gè)用戶,使用你當(dāng)前默認(rèn)的登陸名和一個(gè)空的密碼

創(chuàng)建一個(gè)索引然后直接使用它

讓我們運(yùn)行 quickstart 命令來(lái)觸發(fā)一系列的其他 devpi 命令:

$ devpi quickstart
--> $ devpi-server --start
2014-09-04 15:12:19,311 INFO  NOCTX DB: Creating schema
2014-09-04 15:12:19,353 INFO  [Wtx-1] setting password for user u"root"
2014-09-04 15:12:19,353 INFO  [Wtx-1] created user u"root" with email None
2014-09-04 15:12:19,353 INFO  [Wtx-1] created root user
2014-09-04 15:12:19,353 INFO  [Wtx-1] created root/pypi index
2014-09-04 15:12:19,367 INFO  [Wtx-1] fswriter0: committed: keys: u".config",u"root/.config"
starting background devpi-server at http://localhost:3141
/tmp/home/.devpi/server/.xproc/devpi-server$ /home/hpk/venv/0/bin/devpi-server
process u"devpi-server" started pid=841
devpi-server process startup detected
logfile is at /tmp/home/.devpi/server/.xproc/devpi-server/xprocess.log
--> $ devpi use http://localhost:3141
using server: http://localhost:3141/ (not logged in)
no current index: type "devpi use -l" to discover indices
~/.pydistutils.cfg     : no config file exists
~/.pip/pip.conf        : no config file exists
~/.buildout/default.cfg: no config file exists
always-set-cfg: no

--> $ devpi user -c testuser password=
user created: testuser

--> $ devpi login testuser --password=
logged in "testuser", credentials valid for 10.00 hours

--> $ devpi index -c dev
http://localhost:3141/testuser/dev:
  type=stage
  bases=root/pypi
  volatile=True
  uploadtrigger_jenkins=None
  acl_upload=testuser
  pypi_whitelist=

--> $ devpi use dev
current devpi index: http://localhost:3141/testuser/dev (logged in as testuser)
~/.pydistutils.cfg     : no config file exists
~/.pip/pip.conf        : no config file exists
~/.buildout/default.cfg: no config file exists
always-set-cfg: no
COMPLETED!  you can now work with your "dev" index
  devpi install PKG   # install a pkg from pypi
  devpi upload        # upload a setup.py based project
  devpi test PKG      # download and test a tox-based project
  devpi PUSH ...      # to copy releases between indexes
  devpi index ...     # to manipulate/create indexes
  devpi use ...       # to change current index
  devpi user ...      # to manipulate/create users
  devpi CMD -h        # help for a specific command
  devpi -h            # general help
docs at http://doc.devpi.net

顯示版本:

$ devpi --version
2.0.2
devpi install:安裝一個(gè)包

我們現(xiàn)在可以使用 devpi 命令行客戶端來(lái)觸發(fā)一個(gè)從已經(jīng)運(yùn)行的服務(wù)器上使用索引的 pypi 包的 pip install

$ devpi install pytest
--> $ /tmp/docenv/bin/pip install -U -i http://localhost:3141/testuser/dev/+simple/ pytest  [PIP_USE_WHEEL=1,PIP_PRE=1]
Downloading/unpacking pytest
  http://localhost:3141/testuser/dev/+simple/pytest/ uses an insecure transport scheme (http). Consider using https if localhost:3141 has it available
  Running setup.py (path:/tmp/docenv/build/pytest/setup.py) egg_info for package pytest

http://localhost:3141/testuser/dev/+simple/py/ uses an insecure transport scheme (http). Consider using https if localhost:3141 has it available
Requirement already up-to-date: py>=1.4.22 in /tmp/docenv/lib/python2.7/site-packages (from pytest)
Installing collected packages: pytest
  Running setup.py install for pytest

    Installing py.test-2.7 script to /tmp/docenv/bin
    Installing py.test script to /tmp/docenv/bin
Successfully installed pytest
Cleaning up...

devpi install 命令配置一個(gè) pip 調(diào)用,使用在 testuser/dev 索引上的與 pypi 兼容的 +simple/ 頁(yè)來(lái)尋找和下載包。pip 執(zhí)行的是在 PATH 搜索和在 docenv/bin/pip 尋找。

讓我們檢查 pytest 是否被正確安裝:

$ py.test --version
This is pytest version 2.6.1, imported from /tmp/docenv/local/lib/python2.7/site-packages/pytest.pyc

你可以第二次調(diào)用 devpi install 命令,即使在沒(méi)有網(wǎng)絡(luò)的情況下,它也能正常工作。

devpi upload:上傳一個(gè)或多個(gè)包

我們將使用 devpi 命令行工具來(lái)執(zhí)行上傳(你也可以使用 plain setup.py)。

讓我們檢查我們已經(jīng)登錄進(jìn)了正確的索引:

$ devpi use
current devpi index: http://localhost:3141/testuser/dev (logged in as testuser)
~/.pydistutils.cfg     : no config file exists
~/.pip/pip.conf        : no config file exists
~/.buildout/default.cfg: no config file exists
always-set-cfg: no

現(xiàn)在進(jìn)入你其中一個(gè)項(xiàng)目的 setup.py 文件的目錄(我們假設(shè)名字為 example) 來(lái)構(gòu)建和上傳你的包到 testuser/dev 索引。

example $ devpi upload
using workdir /tmp/devpi0
--> $ /usr/bin/hg st -nmac .
hg-exported project to /tmp/devpi0/upload/example -> new CWD
--> $ /tmp/docenv/bin/python setup.py sdist --formats gztar
built: /home/hpk/p/devpi/doc/example/dist/example-1.0.tar.gz [SDIST.TGZ] 0kb
register example-1.0 to http://localhost:3141/testuser/dev/
file_upload of example-1.0.tar.gz to http://localhost:3141/testuser/dev/

這里有三個(gè)觸發(fā)動(dòng)作:

檢測(cè)到一個(gè) mercurial 庫(kù),導(dǎo)致拷貝所有的文件版本到一個(gè)臨時(shí)工作目錄。如果你沒(méi)有使用 mercurial,拷貝動(dòng)作會(huì)跳過(guò),會(huì)直接在你的源碼樹(shù)上做上傳操作。

如我們?cè)?setup.py 中定義的,把 example 版本注冊(cè)進(jìn)我們當(dāng)前的索引

從工作目錄,構(gòu)建和上傳一個(gè) gztar 格式的文件到當(dāng)前索引(使用一個(gè)在鉤子下面的 setup.py 調(diào)用)

我們現(xiàn)在可以安裝剛上傳好的包:

$ devpi install example
--> $ /tmp/docenv/bin/pip install -U -i http://localhost:3141/testuser/dev/+simple/ example  [PIP_USE_WHEEL=1,PIP_PRE=1]
Downloading/unpacking example
  http://localhost:3141/testuser/dev/+simple/example/ uses an insecure transport scheme (http). Consider using https if localhost:3141 has it available
  Downloading example-1.0.tar.gz
  Running setup.py (path:/tmp/docenv/build/example/setup.py) egg_info for package example

Installing collected packages: example
  Running setup.py install for example

Successfully installed example
Cleaning up...

這個(gè)你剛剛從 testuser/dev 索引安裝的上傳包是我們開(kāi)始上傳好的包。

  

注意:devpi upload 允許同時(shí)上傳你的發(fā)行文件的多個(gè)不同格式,比如:sdist.zip 或是 bdist_egg,默認(rèn)是 sdist.tgz

devpi test:測(cè)試一個(gè)已經(jīng)上傳的包

如果你有一個(gè)包使用 tox 做測(cè)試,你或許要調(diào)用:

$ devpi test example  # package needs to contain tox.ini
received http://localhost:3141/testuser/dev/+f/5bc/44b5ac34ff65b/example-1.0.tar.gz#md5=5bc44b5ac34ff65b6b16b332f9ccc22c
unpacking /tmp/devpi-test0/downloads/example-1.0.tar.gz to /tmp/devpi-test0
/tmp/devpi-test0/example-1.0$ tox --installpkg /tmp/devpi-test0/downloads/example-1.0.tar.gz -i ALL=http://localhost:3141/testuser/dev/+simple/ --result-json /tmp/devpi-test0/toxreport.json -c /tmp/devpi-test0/example-1.0/tox.ini
python create: /tmp/devpi-test0/example-1.0/.tox/python
python installdeps: pytest
python inst: /tmp/devpi-test0/downloads/example-1.0.tar.gz
python runtests: PYTHONHASHSEED="2866296898"
python runtests: commands[0] | py.test
___________________________________ summary ____________________________________
  python: commands succeeded
  congratulations :)
wrote json report at: /tmp/devpi-test0/toxreport.json
posting tox result data to http://localhost:3141/testuser/dev/+f/5bc/44b5ac34ff65b/example-1.0.tar.gz
successfully posted tox result data

以上操作發(fā)生了這些事:

devpi 從當(dāng)前的索引中獲取 example 的最新可用版本

把它解壓到一個(gè)臨時(shí)目錄,發(fā)現(xiàn) tox.ini 并且調(diào)用 tox,把它指向我們的 example-1.0.tar.gz。強(qiáng)迫所有的安裝都通過(guò)我們當(dāng)前的 testuser/dev/+simple/ 索引和命令它創(chuàng)建一個(gè) json 格式的報(bào)告

在所有的測(cè)試運(yùn)行完成后,我們發(fā)送 toxreport.json 到 devpi 服務(wù)器去,它將被精確的連接到我們的發(fā)行文件

我們可以校驗(yàn)測(cè)試狀態(tài)是否被記錄:

$ devpi list example
http://localhost:3141/testuser/dev/+f/5bc/44b5ac34ff65b/example-1.0.tar.gz
  cobra linux2 python 2.7.6 tests passed
devpi push: staging a release to another index

一旦你覺(jué)得發(fā)行文件沒(méi)有問(wèn)題,你可以把它推送到一個(gè) devpi-managed 索引和一個(gè)外部的 pypi 索引服務(wù)器。

讓我們創(chuàng)建另外一個(gè) staging 索引:

$ devpi index -c staging volatile=False
http://localhost:3141/testuser/staging:
  type=stage
  bases=root/pypi
  volatile=False
  uploadtrigger_jenkins=None
  acl_upload=testuser
  pypi_whitelist=

我們創(chuàng)建了一個(gè)非易失性的索引,這意味著不能覆蓋和刪除發(fā)行文件,看 Non Volatile Indexes 來(lái)獲取更多信息。

我們現(xiàn)在可以把 example-1.0.tar.gz 從上面的所有推送到 staging 索引:

$ devpi push example-1.0 testuser/staging
   200 register example 1.0 -> testuser/staging
   200 store_releasefile testuser/staging/+f/5bc/44b5ac34ff65b/example-1.0.tar.gz
   200 store_toxresult testuser/staging/+f/5bc/44b5ac34ff65b/example-1.0.tar.gz.toxresult0

這將決定所有在 testuser/dev 索引上的文件屬于指定的 example-1.0 發(fā)行版并且把它們拷貝進(jìn) testuser/staging 索引。

devpi push: 發(fā)行到一個(gè)外部的索引

讓我們檢查我們當(dāng)前的索引:

$ devpi use
current devpi index: http://localhost:3141/testuser/dev (logged in as testuser)
~/.pydistutils.cfg     : no config file exists
~/.pip/pip.conf        : no config file exists
~/.buildout/default.cfg: no config file exists
always-set-cfg: no

讓我們使用 testuser/staging 索引:

$ devpi use testuser/staging
current devpi index: http://localhost:3141/testuser/staging (logged in as testuser)
~/.pydistutils.cfg     : no config file exists
~/.pip/pip.conf        : no config file exists
~/.buildout/default.cfg: no config file exists
always-set-cfg: no

并且再次檢查測(cè)試結(jié)果:

$ devpi list example
http://localhost:3141/testuser/staging/+f/5bc/44b5ac34ff65b/example-1.0.tar.gz
  cobra linux2 python 2.7.6 tests passed

從最后一步推送后,測(cè)試狀態(tài)依然是可用的。

我們現(xiàn)在可以決定推送這個(gè)發(fā)行版到外部的 pypi 索引,我們已經(jīng)在 .pypirc 文件中配置了:

$ devpi push example-1.0 pypi:testrun
no pypirc file found at: /tmp/home/.pypirc

這將推送 example-1.0 發(fā)行版的所有的文件到一個(gè)外部的 testrun 索引服務(wù)器。使用資格證書(shū)和 發(fā)現(xiàn)在 pypi 章節(jié) .pypirc 文件中的 URL。

索引繼承重新配置

現(xiàn)在,我們已經(jīng)有 example-1.0 發(fā)行版和發(fā)行版文件在 testuser/devtestuser/staging 索引,如果我們想在我們的開(kāi)發(fā)索引上一直使用 staging 包,我們可以重新配置 testuser/dev 的繼承基線。

$ devpi index testuser/dev bases=testuser/staging
/testuser/dev changing bases: ["testuser/staging"]
http://localhost:3141/testuser/dev:
  type=stage
  bases=testuser/staging
  volatile=True
  uploadtrigger_jenkins=None
  acl_upload=testuser
  pypi_whitelist=

現(xiàn)在我們切回 testuser/dev

$ devpi use testuser/dev
current devpi index: http://localhost:3141/testuser/dev (logged in as testuser)
~/.pydistutils.cfg     : no config file exists
~/.pip/pip.conf        : no config file exists
~/.buildout/default.cfg: no config file exists
always-set-cfg: no

然后尋找我們的 example 發(fā)行文件:

$ devpi list example
http://localhost:3141/testuser/dev/+f/5bc/44b5ac34ff65b/example-1.0.tar.gz
  cobra linux2 python 2.7.6 tests passed
http://localhost:3141/testuser/staging/+f/5bc/44b5ac34ff65b/example-1.0.tar.gz
  cobra linux2 python 2.7.6 tests passed

我們看到 example-1.0.tar.gz 被包含在兩個(gè)索引中,讓我們移除 testuser/devexample 發(fā)行版:

$ devpi remove -y example
About to remove the following releases and distributions
version: 1.0
  - http://localhost:3141/testuser/dev/+f/5bc/44b5ac34ff65b/example-1.0.tar.gz
  - http://localhost:3141/testuser/dev/+f/5bc/44b5ac34ff65b/example-1.0.tar.gz.toxresult0
Are you sure (yes/no)? yes (autoset from -y option)
deleting release 1.0 of example

如果你沒(méi)有指定 -y 選項(xiàng),你將被詢問(wèn)確認(rèn)刪除的交互式操作。

example-1.0 發(fā)行版本仍然可以通過(guò) testuser/dev 訪問(wèn),因?yàn)樗麖?testuser/staging 基線繼承了所有的發(fā)行版。

$ devpi list example
http://localhost:3141/testuser/staging/+f/5bc/44b5ac34ff65b/example-1.0.tar.gz
  cobra linux2 python 2.7.6 tests passed
$ devpi-server --stop
killed server pid=841
永久的運(yùn)行 devpi-server

如果你想配置安裝一個(gè)永久的 devpi-server。你也可以通過(guò) Quickstart: permanent install on server/laptop 獲取一些幫助。

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

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

相關(guān)文章

  • 使用 docker + devpi 搭建本地 pypi 源

    摘要:前一段時(shí)間開(kāi)發(fā)需要經(jīng)常使用下載,雖然把源改成了國(guó)內(nèi)源,但我對(duì)速度還是不滿意,更為重要的是集成測(cè)試環(huán)境是離線的,要在集成測(cè)試環(huán)境開(kāi)發(fā)顯然需要搭建自己的本地源。在使用之前我曾使用過(guò),但有個(gè)導(dǎo)致離線環(huán)境下的命令總是失敗,所以最后采用搭建源。 前一段時(shí)間開(kāi)發(fā)需要經(jīng)常使用 pip 下載,雖然把 pip 源改成了國(guó)內(nèi)源,但我對(duì)速度還是不滿意,更為重要的是集成測(cè)試環(huán)境是離線的,要在集成測(cè)試環(huán)境開(kāi)發(fā)顯...

    Shimmer 評(píng)論0 收藏0
  • 使用 docker + devpi 搭建本地 pypi 源

    摘要:前一段時(shí)間開(kāi)發(fā)需要經(jīng)常使用下載,雖然把源改成了國(guó)內(nèi)源,但我對(duì)速度還是不滿意,更為重要的是集成測(cè)試環(huán)境是離線的,要在集成測(cè)試環(huán)境開(kāi)發(fā)顯然需要搭建自己的本地源。在使用之前我曾使用過(guò),但有個(gè)導(dǎo)致離線環(huán)境下的命令總是失敗,所以最后采用搭建源。 前一段時(shí)間開(kāi)發(fā)需要經(jīng)常使用 pip 下載,雖然把 pip 源改成了國(guó)內(nèi)源,但我對(duì)速度還是不滿意,更為重要的是集成測(cè)試環(huán)境是離線的,要在集成測(cè)試環(huán)境開(kāi)發(fā)顯...

    includecmath 評(píng)論0 收藏0
  • 托管Hadoop集群 快速上手 UHadoop

    摘要:也可以將托管集群設(shè)置為快捷方式,通過(guò)左側(cè)快捷方式菜單欄點(diǎn)擊進(jìn)入??蚣芗褐袃H部署。用于做存儲(chǔ)集群,有專屬的節(jié)點(diǎn)機(jī)型。節(jié)點(diǎn)管理節(jié)點(diǎn),負(fù)責(zé)協(xié)調(diào)整個(gè)集群服務(wù)。目前僅節(jié)點(diǎn)支持綁定。通過(guò)云主機(jī)內(nèi)網(wǎng)進(jìn)行登錄。登錄密碼為集群創(chuàng)建時(shí)設(shè)置的密碼。 快速上手本篇目錄創(chuàng)建集群提交任務(wù)本文檔將帶領(lǐng)您如何創(chuàng)建UHadoop集群,并使用UHadoop集群完成數(shù)據(jù)處理任務(wù)。創(chuàng)建集群本章簡(jiǎn)單介紹了用戶使用UHadoop服務(wù)...

    ernest.wang 評(píng)論0 收藏295

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<