每个AI都有自己的Python

图片由作者提供

这似乎是一个相当棘手的话题,但不管你信不信,构建 AI 应用程序的 90% 问题的主要原因都是 Python 依赖关系。

你测试了一个昨天还在运行的 AI 应用,然后突然:突然一切都崩溃了!你开始寻找原因,调试代码……这不是你的问题,是你的 Python 库更新导致崩溃!

我找到了一种避免安装 5 个不同 Python 版本并一劳永逸解决问题的方法。

而且,您还可以拥有一条便携式 Python,里面装有您所需的一切,随时可以随您去任何地方!

了解 Python Embedded

嵌入式发行版是一个包含最小 Python 环境的 ZIP 文件。它旨在作为另一个应用程序的一部分,而不是由最终用户直接访问。

图片来自https://www.python.org/downloads/windows/

这个相当简单的 ZIP 文件包含一个可移植的 python,它有相当多的限制:您无法安装依赖项,因为您没有 pip。

但是假设我们可以使用 pip… 您仍然无法从源代码构建包:如果您获得已编译的 wheel 包,则不会遇到任何问题,但如果安装需要构建它… 您就不能。

但我们对此也有一个解决方案。

实际情况

到目前为止,如果您关注我的一些文章,您会注意到我几乎总是使用 Python 3.10。这并不是因为我已经习惯了它……只是直到几周前,每次我尝试使用更高的 Python 版本时,句子片段库都会崩溃。

同时,我被迫使用 1.27.0 之前的 Streamlit,因为在构建 Web 服务器时 Protobuf 正在抑制任何 API 调用。

那么该怎么办呢?在 Windows 机器上安装多个 Python 版本可能有点棘手,比在 Linux/Mac OS 上要棘手得多。您需要将它们添加到 PATH,这会开始弄乱您的命令。

解决方案至少有两个。

该图片由Johnson MartinPixabay上发布

1. 单独使用Python嵌入

如果你知道不需要编译任何包,那么这个选项是最安全的。你解压官方的 ZIP 文件,做一些小改动,然后就大功告成了。

示例:构建Streamlit 连接到OpenAI 兼容 API 的应用程序。

在这种情况下,我们希望使用最新Streamlit 版本(1.34.0),它具有完整的聊天界面支持、文本流和新样式管理。它需要Python 3.11+

创建一个全新的文件夹(我的文件夹叫做),然后从官方页面pythontests下载Python 3.11.7 Embedded :我的系统是 64 位,minipc,所以我将下载 64 位的 ZIP 存档。

有 3 个可嵌入包 — 选择适合您的包

现在你可以将 ZIP 文件解压到名为python311

保持其井然有序,以便将来可以重复使用相同的整个文件夹。

如果您使用的是 Windows 终端(例如我在 Windows 11 中使用的终端),您也可以从终端窗口提取存档:

展开-存档-强制 .\python- 3.11 .7 -embed-amd64. zip .\python311

您可以立即开始使用全新的 Python 解释器!只需在pythontests文件夹中打开一个终端并运行:

.\python311\ python.exe

准备就绪 — 退出 Ctrl+Break

此便携版本无法安装 pip 依赖项。尝试一下,你会看到一条烦人的消息:

没有名为 pip 的模块

在嵌入式 Python 中安装 pip 很容易。首先,你必须编辑python311._pth新提取的目录中的文件python311

然后我们必须Lib/site-packages在文本文件的顶部添加并取消注释您找到的最后一行import site

保存文件!

现在浏览 python311 文件夹并从终端运行下面​​的 curl 命令来安装 get-pip.py 文件,该文件是向我们的嵌入式 python 添加 pip 支持所必需的。

cd .\python311\ 

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

get-pip.py 现已位于你的嵌入式 Python 发行版中

最后,从同一个 python311 文件夹运行python.exe get-pip.py

现在安装 pip 包与平常一样。请记住一定要使用嵌入式 Python 文件夹中的 Python 可执行文件。

例如:

# 在主项目目录 pythontests
 .\python311\python.exe -m pip install streamlit==1.34.0 

# 从 python311 目录
python.exe -m pip install openai

注意:这里运行得非常好……但我们仍然有一个问题:我们无法安装任何需要构建的包。例如,我非常喜欢llama-cpp-python:最新版本 0.2.75 没有附带预构建的轮子。

更新 2024.05.21 — 现在我们也有轮子了

我为什么要用它?

如果您想要发送一个包含出色 Python 项目的单个存档,并希望将其传递给您的同事或朋友,您不能给他们venv。在嵌入式 Python 目录中安装依赖项将保留具有相对路径的依赖项……无论您将主文件夹移动到哪里,都不会损坏任何东西。

该图片由MediamodifierPixabay上发布

2 使用嵌入式 Python 创建虚拟环境

从我的角度来看,第二种选择更可取,至少对于您的本地原型设计而言。您基本上使用嵌入式 Python 来创建具有您选择的 Python 版本的虚拟环境。

让我们看看我的设置:

  • 在我的迷你电脑上安装了 Python 3.10
  • 我刚才和你一起创建了一个Python311版本

如果我需要一个带有 Python 3.12 的虚拟环境怎么办?

简单!让我们从这里下载适用于 Python 3.12 的嵌入式 Python 。让我们使用同一pythontests 目录下载 ZIP 文件。您也可以从终端使用以下命令执行此操作

wget https://www.python.org/ftp/python/3.12.2/python-3.12.2-embed-amd64.zip -OutFile python-3.12.2-embed-amd64.zip

我们还可以从终端将 ZIP 文件提取到新文件夹中:

展开-存档-强制 .\python- 3.12 .2 -embed-amd64. zip .\python312

现在在我们的测试文件夹中,我们有一个python311 带有 pip 包和已经安装的几个其他包(streamlit、、openai llama-cpp-python)以及一个尚不支持的全新便携式 Python pip ……

python312 文件夹已准备好

并且不支持虚拟环境!

相当没用

因此,第一步是确保python312 可以下载 pip 包。进入python312 目录并python312._pth进行与之前相同的更改。

然后我们从终端窗口里面的python312目录下载著名的get-pip.py并运行该命令。

cd . \ python312 \ curl

 https://bootstrap.pypa.io/get-pip.py-o get-pip.py . \ python.exe . \ get-pip.py​​​​

安装virtualenv 到你的便携式 Python 中

我们需要一个用于嵌入式 Python 的 venv 工具。当你以传统方式安装 Python 时,它已经配备了该工具。

venv——创建虚拟环境

源代码:Lib/venv/venv 模块支持创建轻量级“虚拟环境”,每个虚拟环境都有自己的……

docs.python.org

在我们的例子中,它不是。但我们可以轻松地做到这一点

.\python.exe -m pip 安装虚拟环境

virtualenv 使用便携式 Python创建一个

现在你需要注意这一步。要创建,venv python312 需要在你想要虚拟环境的主文件夹中。假设我想要主目录中的 venv pythontests

在终端中,我打开项目文件夹并运行;

.\python312\python.exe -m virtualenv venv

现在我有一个 python 3.12 虚拟环境

我们只需尝试激活它就可以发现它正在运行:

venv\脚本\activate

我的终端已经告诉我在 venv 中安装了哪个 python

要验证你的 Python 版本,请运行:

.\venv\Scripts\python .exe  --版本
Python 3.12 . 2

给TA打赏
共{{data.count}}人
人已打赏
AI新闻AI科普

开源终于赶上了吗?

2024-5-21 18:46:20

AI新闻AI科普

小型语言模型:在 PC 和 Raspberry Pi 上使用 3.8B Phi-3 和 8B Llama-3 模型

2024-5-27 22:27:36

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
今日签到
有新私信 私信列表
搜索