Python环境维护

Python environment maintenance

这个问题也有点啰嗦——但确实是求助!

我一直在努力确保我的 Python 安装是最新的,并且在我使用的所有不同机器和设备之间尽可能接近相同(例如,raspberry pi,台式电脑和笔记本电脑)。

我最近的挫败感特别源于一个实际例子,我有两个相同的 Pi Zero W,带有 BME280 传感器,运行使用完全相同的 Python 脚本 - 一个完美运行,另一个抱怨关于 urllib3 - 即使 Pi 的 运行 DietPi 具有相同版本的 Python 等,甚至在卸载并重新安装 influxdb 之后(首先开始抱怨 influxdb 客户端不可用 - 然后在卸载并重新-安装,它发现了一些新的东西以 urllib3 的形式抱怨......),然后卸载并重新安装 urllib3 和请求(但仍然无法正常工作......)

我发现它同样令人沮丧,即使只是在一台 PC 上保留和维护一个版本的 Python 和库 - 特别是如果你将 Mac 放入似乎有自己的“专用”的组合中" Python 安装 - 尝试安装一个不会与“内置”版本混淆的“专用”Python 环境也会导致一段时间后事情变得如此混乱 - 你不知道是什么在哪里,甚至使用 pip/pip3 开始产生你不期望的结果,在你期望看到它们的地方提供图书馆......

是否有一些优雅的解决方案可以轻松地在设备之间传输等?也许像在某个地方安装“主”python,我可以克隆或“打包”然后与脚本一起移动,这样我知道它可以在我插入它的任何设备上运行,并且无论在什么情况下都将继续工作将来有更新吗? Docker 容器可以工作 - 但我很确定它对于 Pi Zero 来说太大了...

我知道 venv,但我不确定这是否是我可以在设备之间“复制和粘贴”的东西。同样,理想情况下,我想在我的 PC 上创建代码,并且能够将 python 文件复制到另一台设备,并且知道它将 运行 在任何地方都相同。 . :)

编写一些适用于任何 Python 环境的代码,并将继续执行任何无望的更新,除了非常琐碎的代码(print ('Hello') 应该给出相同的结果,无论 Python版本,但不是很有趣)。

AFAIK,在 Python Packaging User Guide 的意义上,唯一合理的方法是打包您自己的代码。打包将管理依赖项和 Python 版本,因此如果您可以使用一些 /path/to/python -m pip install 安装它(对于 Windows 没有 venv 的 py -x -m pip install),那么它应该可以使用与用于安装的 python 相同。

它确实需要一些初始工作来理解 Python 打包和构建包,但在新环境中安装您的应用程序时,它应该可以让您省去一些麻烦...如果您希望能够拥有各种 Python 应用程序需要可能不兼容的库版本,venv 绝对是解决方案:你构建一个 venv,在其中安装你自己的包,然后找到你需要的正确版本的依赖项。