在本文中,我们正在研究使用 pip 将代码安装到虚拟环境中的不同方法。
这些会变得更加复杂,但不用担心,我会全程陪伴您。 拍拍你的背
废话说够了!让我们从简单的事情开始吧。
安装本地存储库
假设以下情况:您刚刚签出了存储库并想要安装需求。
这可以通过使用以下命令轻松完成……当然是在创建虚拟环境之后:
1 2 3 |
如果您想知道安装命令和requirements.txt 的缺失,我有坏消息给您。现在是 2024 年,您不应该再使用requirements.txt。
这当然只是我自己的意见,但我正在使用的所有存储库都有一个 pyproject.toml,我强烈建议在您的每个项目中也使用一个。可行的例外可能是沙箱项目和小脚本。
“为什么”在这里可能会被放错地方,但请允许我给你先睹为快。它不仅允许您自己定义您的需求。您还可以定义用户可以根据需要安装的可选依赖项。
这对于您在生产应用程序中不需要的开发工具特别有用,例如测试库或格式化程序。
但这只是功能列表的开始。它们也是元数据的存放位置,并允许自定义应用程序的入口点。
这里再次安装命令:
1 |
|
确保您位于可以找到 pyproject.toml 的文件夹中。
这里有一个专业提示,如果您打算使用正在安装的存储库,请使用以下命令
1 |
|
这将执行可编辑的安装,也称为“开发模式”,它允许您迭代测试代码更改,而无需重新安装项目。
这是什么意思?
您是否曾经遇到过这样的情况:您更改了从中导入的模块中的代码,但更改似乎没有生效?
尝试可编辑安装!
插曲:从分支安装
简单问题:如果你想安装特定分支的版本而不是默认分支,你该怎么办?
答案是显而易见的
1 |
|
并重复上面的步骤!对吗?
你个傻瓜,你刚刚激活了我的陷阱卡!
看,从 2.23 版本开始,镇上出现了一个新的东西,可以更直观地切换分支,它的名字叫 git switch。
git checkout 自此已被弃用。
所以不要使用过时的工具在同事面前暴露自己。相反,下次共享屏幕时随意按下 git 开关,让每个人都知道您是认真的。
从私有存储库安装
振作起来!
到目前为止,一切都只是儿戏。现在是时候使用一些大男孩 pip 了。
看,每个人都可以安装包存储库中可用的包,但只知道如何从那里安装意味着您将无法访问私有存储库中的所有黄金。
在将你自己的代码变成包之前测试它也很有帮助。
如果您发现自己处于这种情况,请使用以下命令:
1 |
|
这里是一个没有占位符的例子,可能会更容易理解。
有趣的事实:“://”之后的所有内容几乎与 git 生成的 ssh 命令相同。但请注意,必须替换斜杠,而不是用于分隔“github.com”和所有者“pandas-dev”的冒号。
如果您想从分支安装……或任何其他相关参考怎么办?
简单!只需在命令末尾添加 @(ref) 即可。所以它看起来像
1 2 |
|
私人仓库和 pyproject.toml
但是如果从命令行安装软件包还不够怎么办?如果您的构建管道也应该从私有存储库安装怎么办?
希望您同意向管道添加单独的 pip install 语句是不可能的。
所以,让我向您展示要添加到 pyproject.toml 的依赖项部分的内容。 你会发现,它与之前的命令非常相似:
1 |
|
添加此内容后,再次运行 pip install -e ..
恭喜!您刚刚在您的环境中安装了过时版本的 pandas。您可能想对您需要的实际包重复此操作。
现在让它快点
既然你一直坚持到现在,我会推荐一个额外的工具。
过去几个月我使用了 uv,它是用 rust 编写的 pip(python 生态系统中其他常用工具)的直接替代品。
最大的卖点是它显着加快了虚拟环境的创建和软件包的安装速度。特别是当您重新创建虚拟环境时,因为它使用缓存。我们谈论的是速度快 10 倍……如果缓存是热的,甚至快 100 倍。
好处列表比这长得多,但这也是另一篇文章的内容。所以,现在就尝试一下,稍后再感谢我。
结论
让我们结束这件事吧。
这些是我在工作中使用的所有方式来处理 git 和 pip 之间的相互作用。可能还有其他方法来安装东西,但这应该涵盖 99% 的用例。
我忘记了你最喜欢的命令行技巧吗?那就在评论里分享吧
我希望您通过本文学到了一些新东西,如果您对更多有关软件开发的技术文章感兴趣,请考虑关注。