最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python項目管理工具Rye的工作原理

 更新時間:2023年07月18日 09:42:46   作者:沿途的風(fēng)景X  
在開發(fā)Python項目時,有時會在一臺電腦上,同時存在多個python項目,而且每個項目的python版本和依賴可能都不一樣,此時需要使用python項目管理工具來進(jìn)行管理,rye是一個python項目管理工具,本文簡單介紹rye的工作原理

pyproject.toml

pyproject.toml是PEP 518 提出的一種文件格式。 其中包含python項目構(gòu)建系統(tǒng)的要求,和項目的一些配置。 這有一篇文檔,展示了此文件的結(jié)構(gòu)。Declaring project metadata — Python Packaging User Guide 此文件可以由多個段落組成。其中project段中的dependencies表示項目的依賴。

rye philosophy

推薦看看這篇文章Philosophy - Rye (rye-up.com)這篇文章展示了rye的設(shè)計哲學(xué)。其中就包含了rye的一些優(yōu)點(diǎn)。例如

  • 不用給虛擬環(huán)境安裝pip,就能管理依賴。
  • 不使用系統(tǒng)的python。

Rye 的安裝和配置shell和基本使用方式

安裝和配置shell的方式

Installation - Rye (rye-up.com) 核心就是以下兩行。

curl -sSf https://rye-up.com/get | bash
echo 'source "$HOME/.rye/env"' >> ~/.bashrc

第一行,是安裝。

  • https://rye-up.com/get下載腳本,運(yùn)行。
  • 腳本其中核心步驟是下載一個二進(jìn)制文件,運(yùn)行這個二進(jìn)制文件,來安裝。至于這個二進(jìn)制文件是如何把rye安裝到系統(tǒng)中的,文章后面再詳細(xì)闡述。

第二行,是配置shell(內(nèi)容是配置環(huán)境變量)。核心內(nèi)容是把$HOME/.rye/shims添加到$PATH的最前面。

?  ~ cat "$HOME/.rye/env"
# rye shell setup
case ":${PATH}:" in
  *:"$HOME/.rye/shims":*)
    ;;
  *)
    export PATH="$HOME/.rye/shims:$PATH"
    ;;
esac

Rye實際上安裝了哪些東西

rye的安裝默認(rèn)路徑是~/.rye。rye的大致目錄架構(gòu)如下(以下是我的電腦上安裝后用過幾次的。剛安裝時可能會少一些東西。):

?  ~ tree -L 2 ~/.rye
/home/xyc/.rye
├── env
├── pip-tools
│?? ├── cpython@3.11
│?? └── cpython@3.9
├── py
│?? ├── cpython@3.10.11
│?? ├── cpython@3.11.3
│?? └── cpython@3.9.16
├── self
│?? ├── bin
│?? ├── include
│?? ├── lib
│?? ├── lib64 -> lib
│?? ├── pyvenv.cfg
│?? └── tool-version.txt
└── shims
    ├── python
    ├── python3
    └── rye
13 directories, 6 files

rye是rust寫的,但是它利用了python能力。在這篇文章Philosophy - Rye (rye-up.com) 中,作者表示rye不使用系統(tǒng)安裝的python。這里的self文件,就是rye直接從GitHub - indygreg/python-build-standalone: Produce redistributable builds of Python 下載的已構(gòu)建的python。

基本使用方式

Basics - Rye (rye-up.com) 一般只要學(xué)會

  • rye init <PROJECT_NAME>
  • rye pin <PYTHON_VERSION>
  • rye add <PACKAGE_NAME>
  • rye sync 即可

Rye 的基本使用方式的工作原理

rye init

這個沒什么好闡述的。rye源碼里有模板。rye獲取一些信息,然后填到模板里,生成相關(guān)文件即可。

rye pin

把版本號寫在.python-servion文件里。至于.python-version有什么用,文章后面后講。

rye add

rye源代碼里有個腳本模板

const PACKAGE_FINDER_SCRIPT: &str = r#"
...省略一些代碼
finder = PackageFinder(
    index_urls=sources["index_urls"],
    find_links=sources["find_links"],
    trusted_hosts=sources["trusted_hosts"],
)
...省略一些代碼
print(json.dumps([x.as_json() for x in choices]))
"#;

運(yùn)行rye add時,rye把相應(yīng)的參數(shù)填到此代碼模板里,然后啟動一個python解釋器,運(yùn)行py代碼,如果用戶提供的依賴名是可以正確的,就把依賴填到pyproject.toml里。

?  learn_rye git:(master) ? rye add typer
Added typer>=0.9.0 as regular dependency

rye sync

這個命令很關(guān)鍵。因為,rye add只是把依賴填到pyproject.toml里,不會真的去安裝依賴。 rye sync會根據(jù)pyproject.toml的內(nèi)容,更新虛擬環(huán)境。如果還沒有虛擬環(huán)境,會創(chuàng)建一個。 rye sync的關(guān)鍵步驟如下

  • 更新lock文件(這里不詳細(xì)闡述其中原理了)
  • 如果rye自己使用的python,還沒有安裝pip-tools,安裝一下。
  • 給pip-sync命令傳入相應(yīng)的參數(shù),運(yùn)行

以上就是rye的核心工作原理了。

rye的其它使用方式的工作原理。

Shims - Rye (rye-up.com) rye支持python +3.8 my-script.py這種方式來運(yùn)行任意版本的python解釋器。

?  ~ python +3.10 --version
Python 3.10.11
?  ~ python +3.11 --version
Python 3.11.3

原理是什么?

之前提到,安裝rye后要配置一下shell,使得在shell中,$HOME/.rye/shims在PATH的最前面。這樣,‘python‘指向的就不是實際的python解釋器了,而是‘PATH的最前面。這樣,`python`指向的就不是實際的python解釋器了,而是`PATH的最前面。這樣,‘python‘指向的就不是實際的python解釋器了,而是‘HOME/.rye/shims/python`。

?  ~ which python
/home/xyc/.rye/shims/python

它會把命令轉(zhuǎn)發(fā)到指定版本的python解釋器中。

總結(jié)

本文簡單介紹了rye的工作原理。在研究它的工作原理的過程中,看了一下rye的源代碼。看起來項目不大,值得學(xué)習(xí)一下。

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

相關(guān)文章

  • 利用Python繪制MySQL數(shù)據(jù)圖實現(xiàn)數(shù)據(jù)可視化

    利用Python繪制MySQL數(shù)據(jù)圖實現(xiàn)數(shù)據(jù)可視化

    這篇文章主要介紹了利用Python繪制MySQL數(shù)據(jù)圖實現(xiàn)數(shù)據(jù)可視化,其中包括Python與MySQL的連接搭建、用Python執(zhí)行MySQL語句查詢等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • PyTorch中torch.utils.data.DataLoader實例詳解

    PyTorch中torch.utils.data.DataLoader實例詳解

    torch.utils.data.DataLoader主要是對數(shù)據(jù)進(jìn)行batch的劃分,下面這篇文章主要給大家介紹了關(guān)于PyTorch中torch.utils.data.DataLoader的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • 基于Python開發(fā)Office文檔圖片提取器

    基于Python開發(fā)Office文檔圖片提取器

    這篇文章主要為大家詳細(xì)介紹了一個基于PyQt5開發(fā)的桌面應(yīng)用,可以實現(xiàn)Office文檔圖片提取功能,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2025-01-01
  • 淺析Python3 pip換源問題

    淺析Python3 pip換源問題

    這篇文章主要介紹了Python3 pip換源問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • Python列表解析操作實例總結(jié)

    Python列表解析操作實例總結(jié)

    這篇文章主要介紹了Python列表解析操作,結(jié)合實例形式總結(jié)分析了Python列表解析常見的列表推導(dǎo)式、循環(huán)語句、條件列表、嵌套列表等相關(guān)操作技巧,需要的朋友可以參考下
    2020-02-02
  • Python使用matplotlib給柱狀圖添加數(shù)據(jù)標(biāo)簽bar_label()

    Python使用matplotlib給柱狀圖添加數(shù)據(jù)標(biāo)簽bar_label()

    這篇文章主要介紹了Python使用matplotlib給柱狀圖添加數(shù)據(jù)標(biāo)簽bar_label(),記錄如何用使用matplotlib給柱狀圖添加數(shù)據(jù)標(biāo)簽,是以matplotlib.pyplot.bar_label()為例,需要的朋友可以參考一下
    2022-03-03
  • python 詳解如何使用GPU大幅提高效率

    python 詳解如何使用GPU大幅提高效率

    CuPy是一個開源矩陣庫,使用NVIDIA CUDA加速。CuPy使用Python提供GPU加速計算。CUPY使用CUDA相關(guān)庫,包括 CuBLAS、CUDNN、Curand、CuoSver、CuPaSeSE、Cufft和NCCL,以充分利用GPU架構(gòu)
    2021-11-11
  • SymPy庫關(guān)于矩陣的基本操作和運(yùn)算

    SymPy庫關(guān)于矩陣的基本操作和運(yùn)算

    本文主要介紹了SymPy庫關(guān)于矩陣的基本操作和運(yùn)算,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Python?matplotlib調(diào)整坐標(biāo)軸位置、標(biāo)簽位置和標(biāo)簽方向以及X軸刻度標(biāo)簽位置

    Python?matplotlib調(diào)整坐標(biāo)軸位置、標(biāo)簽位置和標(biāo)簽方向以及X軸刻度標(biāo)簽位置

    我們在用matplotlib繪制圖的時候總是有各種需求,下面這篇文章主要給大家介紹了關(guān)于Python?matplotlib調(diào)整坐標(biāo)軸位置、標(biāo)簽位置和標(biāo)簽方向以及X軸刻度標(biāo)簽位置的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • 如何在PyCharm中安全地設(shè)置和使用API Key方式

    如何在PyCharm中安全地設(shè)置和使用API Key方式

    在PyCharm中,通過運(yùn)行配置添加API_KEY環(huán)境變量,使用os.environ或os.getenv在代碼中引用,確保安全性,避免硬編碼,推薦設(shè)置默認(rèn)值或提示
    2025-07-07

最新評論

南城县| 贺州市| 巨鹿县| 弋阳县| 依兰县| 迭部县| 平果县| 康马县| 兴隆县| 徐水县| 长武县| 临夏市| 浑源县| 廊坊市| 汽车| 阆中市| 南充市| 澄迈县| 鄄城县| 时尚| 江川县| 玉树县| 堆龙德庆县| 康乐县| 雷山县| 筠连县| 鄱阳县| 乌什县| 梅河口市| 哈密市| 凤山县| 闸北区| 灵台县| 老河口市| 清水河县| 湾仔区| 仪征市| 叶城县| 高青县| 屯门区| 五河县|