欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python包管理工具之PDM的使用教程

 更新時間:2022年08月03日 10:18:24   作者:小姜  
今天主要是給大家推薦一個叫PDM的工具,全稱:Python?Development?Master,它也是非常好用。本文將為大家詳細講講它的使用,感興趣的可以了解一下

前言

大家好,我是小姜。之前講了一個pipenv和poetry包管理工具,想必大家也和我一樣去了解過pipenv所存在問題,所以不是很推薦使用。后來改成了poetry工具,但這個東西對我來說稍微有點麻煩,經(jīng)常容易打錯,雖然可以做成alias的形式。那么今天我給大家推薦一個叫PDM的工具,全稱:Python Development Master。它也是非常好用,有興趣的朋友可以使用一下。

安裝使用PDM

# macos安裝pipx
brew install pipx
pipx ensurepath

# Linux安裝pipx
python3 -m pip install pipx
python3 -m pipx ensurepath

用pipx安裝pdm

PDM 只有 Python 3.7+ 的版本才能使用,使用其他的方法安裝,要先保證你的 Python 版本,但使用 pipx 則不需要你去操心。一定要注意安裝pipx的版本以及pipx安裝pdm時使用的Python版本,否則 pdm init 會失敗

pipx install pdm
pipx list

配置 pdm 自動補全

# zsh方法
mkdir $ZSH_CUSTOM/plugins/pdm
pdm completion zsh > $ZSH_CUSTOM/plugins/pdm/_pdm

vim ~/.zshrc
plugins=(
         pdm
         poetry
         git
         zsh-completions
         zsh-autosuggestions
)

source ~/.zshrc

pdm info

PDM初始化項目

執(zhí)行 pdm init 就會開始初始化,初始化的時候,會讓你選擇項目的一些信息:

  • 是否要上傳 PyPI
  • 依賴的 Python 版本
  • License 類型
  • 作者信息
  • 郵箱信息 在初始化項目時會把機器上的所有 Python 版本都掃描出來了,會讓選擇項目的 Python 版本。
? mkdir pdm-demo
? cd pdm-demo
# 重新執(zhí)行pdm成功
? pdm init
Creating a pyproject.toml for PDM...
Please enter the Python interpreter to use
0. /Users/allenjol/.pyenv/versions/3.10.4/bin/python3 (3.10)
1. /Users/allenjol/.pyenv/versions/3.10.4/bin/python (3.10)
2. /Users/allenjol/.pyenv/versions/3.10.4/bin/python3.10 (3.10)
3. /Users/allenjol/.pyenv/versions/3.10.4/bin/python3.10 (3.10)
4. /Users/allenjol/.pyenv/versions/3.10.4/bin/python3 (3.10)
5. /Users/allenjol/.pyenv/versions/3.10.4/bin/python (3.10)
6. /Library/Frameworks/Python.framework/Versions/Current/bin/python3.10 (3.10)
7. /Library/Developer/CommandLineTools/usr/bin/python3 (3.8)
8. /Users/allenjol/.local/pipx/venvs/pdm/bin/python (3.10)
Please select: [0]: 8
Using Python interpreter: /Users/allenjol/.local/pipx/venvs/pdm/bin/python (3.10)
Is the project a library that will be uploaded to PyPI? [y/N]: N
License(SPDX name) [MIT]:
Author name [allen_jol]:
Author email [471733951@qq.com]:
Python requires('*' to allow any) [>=3.10]:
Changes are written to pyproject.toml.

# 完成之后,PDM 會將你的選擇以 toml 格式寫入 pyproject.toml 配置文件中。
? ll
total 8
-rw-r--r--  1 allenjol  staff  283 May 20 13:58 pyproject.toml


? cat pyproject.toml
[project]
name = ""
version = ""
description = ""
authors = [
    {name = "allen_jol", email = "471733951@qq.com"},
]
dependencies = []
requires-python = ">=3.10"
license = {text = "MIT"}

[tool.pdm]

[build-system]
requires = ["pdm-pep517>=0.12.0"]
build-backend = "pdm.pep517.api"

PDM 常用命令

# 安裝包
pdm add requests

# 查看包
pdm list

# 以樹狀形式查看
pdm list --graph

# 查看包的詳情
pdm show requests

# 刪除包
pdm remove requests

# 項目配置(不加任何參數(shù),可以打印出該項目的環(huán)境配置)
pdm config

# 修改pypi源
pdm config pypi.url http://mirrors.aliyun.com/pypi/simple
pdm config pypi.url

運行命令

要在 pdm 的環(huán)境中執(zhí)行命令或者項目,可以使用 run 命令,若是執(zhí)行項目時,有諸多參數(shù),可以在 pyproject.toml 配置命令別名

$ cat main.py
print('Hello, pdm')

$ pdm run python main.py
hello, pdm

查看環(huán)境

pdm info -v
pdm info --env
pdm info --packages
pdm info --where
pdm info --python

更新包

# 更新所有包
pdm update 

# 更新某個包
pdm update <pkg>

復雜的場景,pdm 也都為你考慮到了,它提供了很多選項,可以根據(jù)需要使用

  • --save-compatible:項目依賴可兼容的版本
  • --save-wildcard:保存通配符版本(暫不明白)
  • --save-exact:保存有指定確切版本的包
  • --save-minimum:保持最小版本的包
  • --update-reuse:盡量只更新命令行中指定的包,其依賴包能不更新則不更新
  • --update-eager:更新某個包順帶更新其依賴包(遞歸升級)
  • --prerelease:允許提前釋放(暫不明白)
  • --unconstrained:忽略包版本的約束,可將包升級至最新版本
  • --top:僅更新有在 pyproject.toml 的包
  • --dry-run:試運行,而不去修改 lock 文件
  • --no-sync:只更新 lock 文件,但不更新包

如果你的依賴包有設置分組,還可以指定分組進行更新

pdm update -G security -G http

也可以指定分組更新分組里的某個包

pdm update -G security cryptography

加個 -d 就可以再指定 dev 依賴

# 更新所有的 dev 依賴
pdm update -d

# 更新 dev 依賴下某個分組的某個包
pdm update -dG test pytest

也可以指定 --prod 或者 --production 升級非 dev (即生產(chǎn))的包。

切換Python版本

當你在初始化 pdm 項目時,就已經(jīng)選定了當前的 Python 版本和可用的 Python 版本范圍,后面如果想更改,可以使用 use 命令,但版本要受之前設定的版本范圍約束。假設允許范圍是 python 3.9+,當前使用的是 python 3.10,可以直接切換過去。

pdm use python3.9

命令別名

在 pyproject.toml 添加 [tool.pdm.scripts] 可以設置快捷命令別名,若項目的執(zhí)行有非常多的參數(shù),這種設定別名的方法將很有用。

$ tail -n 2 pyproject.toml
[tool.pdm.scripts]
start = 'python main.py'

$ pdm run start
Running cmd script: ['python', 'main.py']
Hello, pdm

[tool.pdm.scripts] 有兩種形式

# 第一種
[tool.pdm.scripts]
start = "python main.py"

# 第二種
[tool.pdm.scripts]
start = {cmd = "python main.py"}

若想在參數(shù)中加注釋,就必須得使用第二種方法,例如這樣

[tool.pdm.scripts]
start = {cmd = [
    "flask",
    "run",
    # Important comment here about always using port 54321
    "-p", "54321"
]}

除了 cmd 之外,還有兩個參數(shù) 一個是 shell 參數(shù),從輸出來看你應該和看出和 cmd 的區(qū)別,和 subprocess.Popen() with shell=True 差不多一個意思

$ tail -n 2 pyproject.toml
[tool.pdm.scripts]
start = {shell = "python main.py"}

$ pdm run start
Running cmd script: python main.py
Hello, pdm

一個是 env_file 參數(shù),可以指定配置環(huán)境變量的文件

[tool.pdm.scripts]
start.cmd = "flask run -p 54321"
start.env_file = ".env"

如果想要把這個環(huán)境變量的文件不僅限于某個命令,而是 pdm run 全局,可以這樣配置

[tool.pdm.scripts]
_.env_file = ".env"

方案兼容

其他方案遷移到pdm

pdm 足夠好用,也足夠開放,如果你當前使用的是其他的包管理器,比如 pipenv ,poetry,或者還在用最原始的 requirements.txt ,你也可以很方便的遷移到 pdm 中來:

使用 pdm import -f 無需初始化,直接轉(zhuǎn)換

執(zhí)行 pdm init 或者 pdm install 的時候,會自動識別你當前的依賴情況并轉(zhuǎn)換 pdm遷移到其他方案 也可以當 pdm 管理的項目,導出為其他方案 pyproject.toml 和 pdm.lock是 pdm 的兩個核心文件。pdm 做為一個后起之秀,也沒有忘本,它支持:

將 pyproject.toml 轉(zhuǎn)成 setup.py

pdm export -f setuppy -o setup.py

將 pdm.lock 轉(zhuǎn)成 requirements.txt

pdm export -o requirements.txt

pycharm 配置支持 PDM

在命令行創(chuàng)建項目目錄,進入項目目錄執(zhí)行init初始化,設置一下pypi源,然后使用pycharm打開這個目錄。

mkdir pdm-demo
cd pdm-demo

pdm config pypi.url
pdm config pypi.url http://mirrors.aliyun.com/pypi/simple –-trusted-host mirrors.aliyun.com
pdm config pypi.url

# 永久設置 Linux下
? vi ~/.pip/pip.conf
[global]
index-url=https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com


# 使用 pdm 安裝一個包:
pdm add -v requests flask

完成安裝后,我們可以在當前目錄下看到__pypackages_目錄,我們前面所安裝的庫就隔離安裝在其下面,類似node的node_modules目錄。這樣就實現(xiàn)了項目級別的環(huán)境隔離效果,且無需創(chuàng)建額外的虛擬環(huán)境,要在IDE中使用pdm項目下的本地隔離庫執(zhí)行程序很簡單,以pycharm為例,將pdm項目打開為pycharm工程之后,找到如圖所示位置的lib文件夾,將其標記為Sources Root即可,同時記得將解釋器選為pdm init初始化時所在環(huán)境相對應的。

用pycharm打開pdm-demo項目,找到如圖所示位置的lib文件夾,將其標記為Sources Root即可,同時記得將解釋器選為pdm init初始化時所在環(huán)境相對應的Python解釋器。

pycharm設置Python解釋器為pdm init初始化時所在環(huán)境相對應的Python解釋器:先查看 pdm info 信息,可以看到 Python Interpreter 解釋器路徑

? pdm info
PDM version:        1.15.0
Python Interpreter: /Users/allenjol/.local/pipx/venvs/pdm/bin/python (3.10)
Project Root:       /Users/allenjol/Documents/Codes/pdm-demo
Project Packages:   /Users/allenjol/Documents/Codes/pdm-demo/__pypackages__/3.10

pycharm設置 Python Interpreter 路徑和pdm info 出來的一樣即可。

到此這篇關于Python包管理工具之PDM的使用教程的文章就介紹到這了,更多相關Python包管理工具PDM內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python字符串編碼識別模塊chardet簡單應用

    python字符串編碼識別模塊chardet簡單應用

    有時候需要先檢測一個文件的編碼,然后將其轉(zhuǎn)化為另一種編碼。這時候就會用到chardet(chardet是python的一個第三方庫,是非常優(yōu)秀的編碼識別模塊)
    2015-06-06
  • Python實現(xiàn)emoji表情的簡單方法

    Python實現(xiàn)emoji表情的簡單方法

    “表情包”是一種利用圖片來表示感情的一種方式。下面這篇文章主要給大家介紹了關于Python實現(xiàn)emoji表情的簡單方法,需要的朋友可以參考下
    2021-05-05
  • python opencv將多個圖放在一個窗口的實例詳解

    python opencv將多個圖放在一個窗口的實例詳解

    這篇文章主要介紹了python opencv將多個圖放在一個窗口,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • 39條Python語句實現(xiàn)數(shù)字華容道

    39條Python語句實現(xiàn)數(shù)字華容道

    這篇文章主要為大家詳細介紹了39條Python語句實現(xiàn)數(shù)字華容道,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • pandas修改DataFrame列名的方法

    pandas修改DataFrame列名的方法

    下面小編就為大家分享一篇pandas修改DataFrame列名的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python入門教程(三十六)Python的文件寫入

    Python入門教程(三十六)Python的文件寫入

    這篇文章主要介紹了Python入門教程(三十六)Python的文件寫入,open()函數(shù)可以打開一個文件供讀取或?qū)懭耄绻@個函數(shù)執(zhí)行成功,會回傳文件對象,需要的朋友可以參考下
    2023-05-05
  • Python?通過colorama?設置控制臺、命令行輸出彩色文字

    Python?通過colorama?設置控制臺、命令行輸出彩色文字

    這篇文章主要介紹了Python?通過colorama?設置控制臺、命令行輸出彩色文字的相關資料,需要的朋友可以參考下
    2023-09-09
  • 簡單的Python動態(tài)可視化神器,編程小白也能上手

    簡單的Python動態(tài)可視化神器,編程小白也能上手

    這篇文章就來介紹簡單的Python動態(tài)可視化神器,最近發(fā)現(xiàn)了一個寶藏動態(tài)可視化庫,非常簡單,即使是小白也能輕松上手。這個庫就是motionchart,它能夠用 pandas 的 dataframe 數(shù)據(jù)直接創(chuàng)建交互式的動態(tài)圖表,下面來簡單看一下如何使用。

    2021-10-10
  • python使用原始套接字發(fā)送二層包(鏈路層幀)的方法

    python使用原始套接字發(fā)送二層包(鏈路層幀)的方法

    今天小編就為大家分享一篇python使用原始套接字發(fā)送二層包(鏈路層幀)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python利用operator模塊實現(xiàn)對象的多級排序詳解

    Python利用operator模塊實現(xiàn)對象的多級排序詳解

    python中的operator模塊提供了一系列的函數(shù)操作。下面這篇文章主要給大家介紹了在Python中利用operator模塊實現(xiàn)對象的多級排序的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05

最新評論