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

Python項(xiàng)目管理工具Rye的工作原理

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

pyproject.toml

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

rye philosophy

推薦看看這篇文章Philosophy - Rye (rye-up.com)這篇文章展示了rye的設(shè)計(jì)哲學(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)行。
  • 腳本其中核心步驟是下載一個(gè)二進(jìn)制文件,運(yùn)行這個(gè)二進(jìn)制文件,來安裝。至于這個(gè)二進(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實(shí)際上安裝了哪些東西

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

?  ~ 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

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

rye pin

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

rye add

rye源代碼里有個(gè)腳本模板

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

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

rye sync

這個(gè)命令很關(guān)鍵。因?yàn)?,rye add只是把依賴填到pyproject.toml里,不會真的去安裝依賴。 rye sync會根據(jù)pyproject.toml的內(nèi)容,更新虛擬環(huán)境。如果還沒有虛擬環(huán)境,會創(chuàng)建一個(gè)。 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‘指向的就不是實(shí)際的python解釋器了,而是‘PATH的最前面。這樣,`python`指向的就不是實(shí)際的python解釋器了,而是`PATH的最前面。這樣,‘python‘指向的就不是實(shí)際的python解釋器了,而是‘HOME/.rye/shims/python`。

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

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

總結(jié)

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

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

相關(guān)文章

最新評論