windows Linux 之间如何优雅的迁移 Python 环境呢?

332 天前
zeromovie  zeromovie

首先想到的思路是 os a 导出 req.txt 到 os b 上,然后 os b 根据 req.txt 或者类似的依赖包文件重新安装环境,但是问题是依赖关系可能由于 os 的差异发生变化,那么一个一个包的去试感觉也太蛋疼了,有没有好的解决方案呢

2213 次点击
所在节点   Python  Python
14 条回复
bitmin
bitmin
332 天前
用 poetry pyproject.toml ?
uliah
uliah
332 天前
代码最终是运行在 Linux 上,推荐尝试 windows wsl || vms;
代码需要跨平台运行,推荐尝试 go;

DEVOPS 处理的一个典型问题:"我本地好好的,为什么到服务器就报错?"
winterpotato
winterpotato
332 天前
我想的也是 requirements.txt pyproject.toml 这类的:-)
thinkershare
thinkershare
332 天前
没有什么办法。
jiayouzl
jiayouzl
332 天前
我肯定选 docker
peanutBark
peanutBark
332 天前
poetry + docker. 完美解决问题
kdwycz
kdwycz
332 天前
wsl2 就不用迁移了,甚至 wsl2 能优雅的在不同的 windows 中迁移
ClericPy
ClericPy
332 天前
https://pypi.org/project/zipapps/
用 -d 模式, 把依赖和源码打包成几十 KB 的玩意, 两边机器只要搞定解释器, 然后在目标机器上现安装依赖
laqow
laqow
332 天前
可能直接按包的方式开发,分发成不同的 wheel
Jirajine
Jirajine
332 天前
Rye, rustup + cargo for python
https://rye-up.com/
tomczhen
tomczhen
332 天前
如果是开发的目的,poetry ,pipenv 这些都可以。如果是分发为目的,纯 Python 或者有 wheels 的包,可以用,pip 的--platform 参数指定平台,然后使用 zipapp 的相关工具 shiv 这些的可以打出一个 pyz 包,使用起来和 jar 包类似。没有 wheels 或者有动态依赖,或者依赖本身绑定平台,我是懒得去研究怎么解决了。
XXWHCA
XXWHCA
331 天前
我为什么没有 get 到点,requirements.txt pyproject.toml 不就是做这个的吗,固定版本号,那什么 os 下都一样啊。然后 python 版本 可以用 pyenv 直接切换,怎么会存在差异变化呢。
jfcherng
jfcherng
331 天前
@XXWHCA 如果某個版本號在某個平台下無法安裝呢
craiiz
craiiz
328 天前
@XXWHCA ai 大模型火了之后,玩了许多项目感觉 requirements.txt 和 pyproject.toml 并不能完全重现依赖环境,绝大部分都要按着项目里的 rq.txt 先装一遍,然后一个冲突一个冲突逐个解决....

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1024744

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX