Python 包管理之 poetry

poetry是一個Python虛擬環境和依賴管理的工具。poetry和pipenv類似,另外還提供了打包和發布的功能。

官方文檔:python-poetry.org/docs/

python項目部署:poetry管理本地環境,上線用docker

poetry 安裝

poetry提供多種安裝方式,個人推薦從以下2種方式中選擇:

方式一:(推薦)

$ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python

方式二:(pip)

$ pip install --user poetry

安裝完成之后,將腳本路徑添加到 環境變量中,添加完成之后,可在終端輸入命令: poetry --version 來確認是否安裝配置完成。

工程初始化

新工程

如果當前還沒有創建工程,可以使用poetry新建工程:

輸入poetry new來創建一個項目腳手架,包括基本結構、pyproject.toml文件。

$ poetry new poetry-demo

這時候,會創建一個包含如下內容的工程

poetry-demo
├── pyproject.toml  # 使用此文件管理依賴列表和項目的各種meta信息,用來替代 Pipfile、requirements.txt、setup.py、setup.cfg、MANIFEST.in 等等各種配置文件
├── README.rst
├── poetry_demo     # 項目目錄
│ └── __init__.py
└── tests
├── __init__.py
└── test_poetry_demo.py

已有工程

在已有的項目使用poetry,只需要執行 poetry init 命令來創建一個pyproject.toml文件

$ poetry init

這時候,它會讓你輸入包名稱、版本號等信息,你可以選擇輸入,也可以選擇按下ENTER鍵使用默認值,完成以后,pyproject.toml如以下格式:

name = "poetry-demo"
version = "0.1.0"
description = ""
authors = ["lepeng"][tool.poetry.dependencies]
python = "*"[tool.poetry.dev-dependencies]
pytest = "^3.4"

依賴包管理

安裝依賴包: poetry install

可以使用install命令直接解析并安裝 pyproject.toml 的依賴包

$ poetry install

將依賴包添加到pyproject.toml文件中,同時安裝它們: poetry add

$ poetry add numpy

還可以,通過添加配置參數–dev來區分不同環境下的依賴包。

  • poetry add flask:安裝最新穩定版本的flask
  • poetry add pytest --dev: 指定為開發依賴,會寫到pyproject.toml中的[tool.poetry.dev-dependencies]區域
  • poetry add flask=2.22.0: 指定具體的版本
  • poetry install: 安裝pyproject.toml文件中的全部依賴
  • poetry install --no-dev:只安裝非development環境的依賴,一般部署時使用

更新所有鎖定版本的依賴包: poetry update

$ poetry update

更新指定依賴包

$ poetry update numpy

卸載依賴包: poetry remove

$ poetry remove numpy

查看可以更新的依賴: poetry show

$ poetry show --outdated

查看項目安裝的依賴: poetry show

$ poetry show

樹形結構查看項目安裝的依賴

$ poetry show -t

執行python命令 poetry run

$ poetry run python -V 主要用來執行python命令,會將run之后的命令放到python環境執行。
$ poetry run python app.py 運行Python腳本

將python文件打包 poetry build

主要用來將python文件打包,打包之后的產物有兩種包的格式:sdist是源碼格式;wheel是編譯之后的格式。

$ poetry build

將用build命令打包完成的產物上傳到PyPI上:poetry publish

配置正確的賬號和用戶名,這樣才可以正常上傳

$ poetry config http-basic.pypi username password
$ poetry publish

假如你們公司有自己的私有倉庫,則可以通過如下方式上傳:
先配置私有倉庫的信息,然后再上傳

$ poetry config repositories.foo https://foo.bar/simple/
$ poetry config http-basic.foo username password
$ poetry publish -r my-repository

虛擬環境管理

創建虛擬環境

創建虛擬環境有2種方式:

方式1:

如果在配置文件中配置了virtualenvs.create=true,執行 poetry install 或 poetry add 時會檢查是否有虛擬環境,否則會自動創建。

這里一個問題就是:如果系統中既有Python2又有Python3,且項目既支持Python2也支持Python3,那poetry會優先使用Python2。

方式2:利用 poetry env use 創建

指定創建虛擬環境時使用的Python解釋器版本
$ poetry env use python3.7

激活虛擬環境
$ poetry shell

查看虛擬環境信息
$ poetry env info

顯示虛擬環境列表
$ poetry env list

顯示虛擬環境絕對路徑
$ poetry env list --full-path

刪除虛擬環境
$ poetry env remove python3.7

查看python版本
$ poetry run python -V

poetry config 配置文件: config.toml

poetry提供了全局config配置和特定項目的config配置。

  • windows下的全局config配置文件:C:\Users\fenglepeng\AppData\Roaming\pypoetry\config.toml
  • macOS下的全局config配置文件:/Users/fenglepeng/Library/Application Support/pypoetry/config.toml

目前poetry支持的參數有:

name注釋
cache-dirpoetry使用的緩存目錄的路徑默認值: macOS: ~/Library/Caches/pypoetry Windows: C:\Users\Appdata\Local\pypoetry\Cache Unix: ~/.cache/pypoetry
virtualenvs.create默認值為true,如果執行 poetry install/poetry add時沒有虛擬環境,就自動創建一個虛擬環境,設置為false的話,當虛擬環境不存在時,會將包安裝到系統環境** **
virtualenvs.in-project默認值為false,設置為true的話,會在當前項目目錄下創建虛擬環境
virtualenvs.path虛擬環境的路徑,默認路徑 {cache-dir}\virtualenvs
repositories.設置新的備用存儲庫,具體的參數待確定

也可以使用 poetry config 命令: poetry config ,key就是表格內的參數名,value就是參數要配置的值。

本地參數配置

可以在poetry config后加 -local來配置當前項目。

poetry config virtualenvs.create false --local

執行后,當前項目在執行poetry install/poetry add時如果沒有虛擬環境的話就會直接安裝到系統路徑上。

執行后,會在當前項目生成poetry.toml文件,全局配置config.toml文件不受影響:

全局配置

poetry config virtualenvs.create false

這里只是示范使用,virtualenvs.create這個參數其實基本不用修改,保留原值就好。

重置配置

poetry config的 -unset就是用來重置配置的,如果是重置全局配置:

poetry config virtualenvs.create --unset

如果是重置項目配置:

poetry config virtualenvs.create --local --unset

查看項目下的poetry.toml文件,可以看到值被重置了。

列出當前配置

列出當前項目的配置可以使用: poetry config --list

這里需要注意,列出配置時,包括了全局和本地的配置,本地的配置會覆蓋全局的參數:

舉例:virtualenvs.create全局為true,本地為false,那這里 virtualenvs.create=false

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453734.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453734.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453734.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Windows數據庫編程接口簡介

數據庫是計算機中一種專門管理數據資源的系統,目前幾乎所有軟件都需要與數據庫打交道(包括操作系統,比如Windows上的注冊表其實也是一種數據庫),有些軟件更是以數據庫為核心因此掌握數據庫系統的使用方法以及數據庫系統…

映客都是互刷禮物嗎_映客互刷禮物有什么用_映客守護有什么用

一起直播、互刷禮物、改ID發性感照,趙本山女375x332 - 122KB - PNG一起直播、互刷禮物、改ID發性感照,趙本山女600x893 - 247KB - JPEG一起直播、互刷禮物、改ID發性感照,趙本山女600x448 - 151KB - JPEG土豪互刷禮物嚇壞男主播 即興表演鐵頭功撞墻560x688 - 57KB - JPEG一起直…

Python 之打包工具 setup.py

1. 為什么需要對項目分發打包? 平常我們習慣了使用 pip 來安裝一些第三方模塊,這個安裝過程之所以簡單,是因為模塊開發者為我們默默地為我們做了所有繁雜的工作,而這個過程就是 打包。 打包,就是將你的源代碼進一步封…

周進度----06

周學習進度06 周學習進度06 第16周 所花時間: 60min60min100min100min100min100min90min60min60min 代碼量(行) 500-800 博客量(篇) 4 了解到的知識 css樣式表的一些知識 項目流程的初步了解 一周的學習心得…

八個實用的CMD命令及開始→運行→命令集錦

這篇文章是很久前收藏在自己筆記本內的,具體的來源地址不清楚,先謝一下原作者吧. 共享出來大家一起學習一下: 一,ping    它是用來檢查網絡是否通暢或者網絡連接速度的命令。作為一個生活在網絡上的管理員或者黑客來說,ping命令是第一個必須掌握的DO…

2019如何轉換2010_9102年,你還不知道PPT怎么轉換成視頻嗎?小心落伍了

你在刷抖音的時候有沒有刷過這類視頻:成為人生贏家必備的書單、5個讓你看透人性的電影、6個讓你升職加薪的APP...如果你細心觀察的話,會發現這類視頻的做法基本都是一個樣的,像在翻相冊一樣,一頁頁過去,所以它們也叫做…

深度學習之RetinaNet

總述 Focal loss主要是為了解決one-stage目標檢測中正負樣本比例嚴重失衡的問題。該損失函數降低了大量簡單負樣本在訓練中所占的權重,也可理解為一種困難樣本挖掘。 目標識別有兩大經典結構: 第一類是以Faster RCNN為代表的兩級識別方法,這種結構的第…

js生成圖片

var image new Image(); var c document.getElementById("myCanvas"); var ctx c.getContext("2d"); var img document.getElementById("scream"); ctx.font "10px Arial";function createImg(name, zuowei, color) {// 姓名ctx…

淺談如何學習linux

一.為什么要學linux? 當然最重要是愛好和興趣!如果你這種必要學,或者根本不喜歡,請不要浪費時間,你學也學不好! 二.起步 你應該為自己創造一個學習linux的環境--在電腦上裝一個linux或unix 問題1:版本…

python的datetime函數_Python連載8-datetime包函數介紹

一、datetime包(上接連載7內容)1.函數:datetime(1)用法:輸入一個日期,來返回一個datetime類?(2)格式:datetime.datetime(年,月,日,hour,minute,second)其中hour,minute,…

深度學習之 soft-NMS

論文:《Improving Object DetectionWith One Line of Code》soft-NMS 英文論文鏈接:https://arxiv.org/pdf/1704.04503.pdfsoft-NMS github 鏈接:https://github.com/bharatsingh430/soft-nms 絕大部分目標檢測方法,最后都要用到…

項目微管理 - 總結也是新的開始

時間都去哪了?聽著這首耳熟能詳的旋律,感嘆著飛速流逝的年華,我漸漸的陷入到沉思之中。時間過的真的很快,從一名程序員到接手一個一線項目團隊一晃已經2年多了。在這段時間里,我接觸了各種各樣的人,處理了各…

一維二維_Excel二維數據轉一維,2種方法輕松搞定

今天是2020年1月1日,祝各位小伙伴們新年快樂,開心每一天~如下所示,左邊是二維交叉數據表,我們希望快速轉換成右邊的一維數據表如果復制粘貼,效率太低了,今天分享兩種方法,實現快速轉換1、powerq…

數百種 Windows 軟件的免費替代品列表

程序所執行任務的描述WindowsLinux1) 網絡連接網頁瀏覽器微軟 IE,網景 Netscape / Mozilla, Opera [私有],Firebird,……1) Netscape/Mozilla 2) Galeon. 3) Konqueror. 4) Opera.[私有] 5) Firebird. 6) Nautilus 7) Epiphany 8)…

深度學習之 Cascade R-CNN

Zhaowei Cai, Nuno Vasconcelos. 《Cascade R-CNN: Delving into High Quality Object Detection》. CVPR 2018.論文鏈接:https://arxiv.org/abs/1712.00726代碼鏈接:https://github.com/zhaoweicai/cascade-rcnn 前言 IOU閾值被用來定義正負例&#x…

轉換文檔參數_明明2秒可以搞定Word、Excel相互轉換,你卻用了半小時!真虧了...

我們在用office三件套工作的時候,經常都需要對文件的格式進行轉換,像是Word文檔和Excel表格的轉換,很多小伙伴都要花上半個小時甚至以上的時間才能搞定,效率實在不行。別擔心,今天小編將分享能快速完成Word、Excel轉換…

深度學習之 DCN(Deformable Convolution)-可變形卷積

Paper link: http://openaccess.thecvf.com/content_ICCV_2017/papers/Dai_Deformable_Convolutional_Networks_ICCV_2017_paper.pdfhttps://arxiv.org/pdf/1703.06211 Code link: https://github.com/msracver/Deformable-ConvNets Abstract 如何有效地對幾何圖形的變化進行…

軟件開發 項目進展 軟件架構 指南

軟件開發,標準化流水線式開發的實施構想 軟件開發,標準化流水線式開發的實施構想 近日看到一篇博文,討論標準化流水線開發模式的話題,但是這篇博文僅僅提出這個問題,未見回應。 這其實是一個很大的問題,我…

linux 下php多版本安裝

php-multi-version ubuntu apt-get 安裝php5.6 添加軟件源sudo add-apt-repository ppa:ondrej/php sudo apt-get updatesudo apt-get install php5.6sudo apt-get install php5sudo apt-get install php7 /usr/local/bin 與/usr/bin echo $PATH/usr/local/sbin:/usr/local/bin…

c++ 舞伴配對問題_挑戰新物體描述問題,視覺詞表解決方案超越人類表現

編者按:最近,研究者們發布了 nocaps 挑戰,用以測量在沒有對應的訓練數據的情況下,模型能否準確描述測試圖像中新出現的各種類別的物體。針對挑戰中的問題,微軟 Azure 認知服務團隊和微軟研究院的研究員提出了全新解決方…