
首先想到的思路是 os a 导出 req.txt 到 os b 上,然后 os b 根据 req.txt 或者类似的依赖包文件重新安装环境,但是问题是依赖关系可能由于 os 的差异发生变化,那么一个一个包的去试感觉也太蛋疼了,有没有好的解决方案呢
1 bitmin 2024-03-18 15:51:58 +08:00 用 poetry pyproject.toml ? |
2 uliah 2024-03-18 15:57:51 +08:00 代码最终是运行在 Linux 上,推荐尝试 windows wsl || vms; 代码需要跨平台运行,推荐尝试 go; DEVOPS 处理的一个典型问题:"我本地好好的,为什么到服务器就报错?" |
3 winterpotato 2024-03-18 15:59:26 +08:00 我想的也是 requirements.txt pyproject.toml 这类的:-) |
4 thinkershare 2024-03-18 16:05:13 +08:00 没有什么办法。 |
5 jiayouzl 2024-03-18 16:07:15 +08:00 我肯定选 docker |
6 peanutBark 2024-03-18 16:15:35 +08:00 poetry + docker. 完美解决问题 |
7 kdwycz 2024-03-18 16:16:47 +08:00 wsl2 就不用迁移了,甚至 wsl2 能优雅的在不同的 windows 中迁移 |
8 ClericPy 2024-03-18 19:35:33 +08:00 https://pypi.org/project/zipapps/ 用 -d 模式, 把依赖和源码打包成几十 KB 的玩意, 两边机器只要搞定解释器, 然后在目标机器上现安装依赖 |
9 laqow 2024-03-18 21:29:09 +08:00 可能直接按包的方式开发,分发成不同的 wheel |
10 Jirajine 2024-03-18 22:08:19 +08:00 Rye, rustup + cargo for python https://rye-up.com/ |
11 tomczhen 2024-03-18 22:55:55 +08:00 如果是开发的目的,poetry ,pipenv 这些都可以。如果是分发为目的,纯 Python 或者有 wheels 的包,可以用,pip 的--platform 参数指定平台,然后使用 zipapp 的相关工具 shiv 这些的可以打出一个 pyz 包,使用起来和 jar 包类似。没有 wheels 或者有动态依赖,或者依赖本身绑定平台,我是懒得去研究怎么解决了。 |
12 XXWHCA 2024-03-19 11:43:39 +08:00 我为什么没有 get 到点,requirements.txt pyproject.toml 不就是做这个的吗,固定版本号,那什么 os 下都一样啊。然后 python 版本 可以用 pyenv 直接切换,怎么会存在差异变化呢。 |