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

Python 项目管理工具 Rye 的工作原理在开发 Python 项目时 有时会在一台电脑上 同时存在多个 python 项目 而且每个项目的 python 版本和依赖可能都不一样 此时需要使用 python 项目管理工具来进行管理 rye 是一个 python 项目管理工具 它的优点是安装和使用都比较简单 而且使用 pyproject toml 来管理 python 项目

大家好,我是讯享网,很高兴认识大家。

在开发Python项目时,有时会在一台电脑上,同时存在多个python项目,而且每个项目的python版本和依赖可能都不一样。此时需要使用python项目管理工具来进行管理。

rye是一个python项目管理工具。它的优点是安装和使用都比较简单,而且使用pyproject.toml来管理python项目。

本文简单介绍rye的工作原理。

pyproject.toml

pyproject.toml是PEP 518 提出的一种文件格式。 其中包含python项目构建系统的要求,和项目的一些配置。 这有一篇文档,展示了此文件的结构。packaging.python.org/en/latest/s… 此文件可以由多个段落组成。其中project段中的dependencies表示项目的依赖。

rye philosophy

推荐看看这篇文章rye-up.com/philosophy/ 这篇文章展示了rye的设计哲学。其中就包含了rye的一些优点。例如

  1. 不用给虚拟环境安装pip,就能管理依赖。
  2. 不使用系统的python。

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

安装和配置shell的方式

rye-up.com/guide/insta… 核心就是以下两行。

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

讯享网

第一行,是安装。

  1. https://rye-up.com/get下载脚本,运行。
  2. 脚本其中核心步骤是下载一个二进制文件,运行这个二进制文件,来安装。至于这个二进制文件是如何把rye安装到系统中的,文章后面再详细阐述。

第二行,是配置shell(内容是配置环境变量)。核心内容是把$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的安装默认路径是~/.rye。rye的大致目录架构如下(以下是我的电脑上安装后用过几次的。刚安装时可能会少一些东西。):

➜ ~ 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能力。在这篇文章rye-up.com/philosophy/ 中,作者表示rye不使用系统安装的python。这里的self文件,就是rye直接从github.com/indygreg/py… 下载的已构建的python。

基本使用方式

rye-up.com/guide/basic… 一般只要学会

  1. rye init <PROJECT_NAME>
  2. rye pin <PYTHON_VERSION>
  3. rye add <PACKAGE_NAME>
  4. rye sync 即可

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

rye init

这个没什么好阐述的。rye源码里有模板。rye获取一些信息,然后填到模板里,生成相关文件即可。

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])) "#; 

运行rye add时,rye把相应的参数填到此代码模板里,然后启动一个python解释器,运行py代码,如果用户提供的依赖名是可以正确的,就把依赖填到pyproject.toml里。

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

rye sync

这个命令很关键。因为,rye add只是把依赖填到pyproject.toml里,不会真的去安装依赖。 rye sync会根据pyproject.toml的内容,更新虚拟环境。如果还没有虚拟环境,会创建一个。 rye sync的关键步骤如下

  1. 更新lock文件(这里不详细阐述其中原理了)
  2. 如果rye自己使用的python,还没有安装pip-tools,安装一下。
  3. 给pip-sync命令传入相应的参数,运行

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

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

rye-up.com/guide/shims… rye支持python +3.8 my-script.py这种方式来运行任意版本的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 

它会把命令转发到指定版本的python解释器中。

总结

本文简单介绍了rye的工作原理。在研究它的工作原理的过程中,看了一下rye的源代码。看起来项目不大,值得学习一下。

如果你有兴趣,还可以深入地研究一下。我暂时就研究到这里了,以后也许发现了更多原理,再回来补充。


讯享网

---------------------------END---------------------------

题外话

当下这个大数据时代不掌握一门编程语言怎么跟的上时代呢?当下最火的编程语言Python前景一片光明!如果你也想跟上时代提升自己那么请看一下.

在这里插入图片描述

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。


👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

若有侵权,请联系删除

小讯
上一篇 2025-02-26 14:08
下一篇 2025-02-08 08:43

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/64184.html