windows Linux 之间如何优雅的迁移 Python 环境呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
zeromovie
V2EX    Python

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

  •  
  •   zeromovie 2024-03-18 15:28:51 +08:00 2732 次点击
    这是一个创建于 641 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    14 条回复    2024-03-22 17:35:52 +08:00
    bitmin
        1
    bitmin  
       2024-03-18 15:51:58 +08:00
    用 poetry pyproject.toml ?
    uliah
        2
    uliah  
       2024-03-18 15:57:51 +08:00
    代码最终是运行在 Linux 上,推荐尝试 windows wsl || vms;
    代码需要跨平台运行,推荐尝试 go;

    DEVOPS 处理的一个典型问题:"我本地好好的,为什么到服务器就报错?"
    winterpotato
        3
    winterpotato  
       2024-03-18 15:59:26 +08:00
    我想的也是 requirements.txt pyproject.toml 这类的:-)
    thinkershare
        4
    thinkershare  
       2024-03-18 16:05:13 +08:00
    没有什么办法。
    jiayouzl
        5
    jiayouzl  
       2024-03-18 16:07:15 +08:00
    我肯定选 docker
    peanutBark
        6
    peanutBark  
       2024-03-18 16:15:35 +08:00
    poetry + docker. 完美解决问题
    kdwycz
        7
    kdwycz  
       2024-03-18 16:16:47 +08:00
    wsl2 就不用迁移了,甚至 wsl2 能优雅的在不同的 windows 中迁移
    ClericPy
        8
    ClericPy  
       2024-03-18 19:35:33 +08:00
    https://pypi.org/project/zipapps/
    用 -d 模式, 把依赖和源码打包成几十 KB 的玩意, 两边机器只要搞定解释器, 然后在目标机器上现安装依赖
    laqow
        9
    laqow  
       2024-03-18 21:29:09 +08:00
    可能直接按包的方式开发,分发成不同的 wheel
    Jirajine
        10
    Jirajine  
       2024-03-18 22:08:19 +08:00
    Rye, rustup + cargo for python
    https://rye-up.com/
    tomczhen
        11
    tomczhen  
       2024-03-18 22:55:55 +08:00
    如果是开发的目的,poetry ,pipenv 这些都可以。如果是分发为目的,纯 Python 或者有 wheels 的包,可以用,pip 的--platform 参数指定平台,然后使用 zipapp 的相关工具 shiv 这些的可以打出一个 pyz 包,使用起来和 jar 包类似。没有 wheels 或者有动态依赖,或者依赖本身绑定平台,我是懒得去研究怎么解决了。
    XXWHCA
        12
    XXWHCA  
       2024-03-19 11:43:39 +08:00
    我为什么没有 get 到点,requirements.txt pyproject.toml 不就是做这个的吗,固定版本号,那什么 os 下都一样啊。然后 python 版本 可以用 pyenv 直接切换,怎么会存在差异变化呢。
    jfcherng
        13
    jfcherng  
       2024-03-19 13:48:17 +08:00
    @XXWHCA 如果某版本在某平台下法安呢
    craiiz
        14
    craiiz  
       2024-03-22 17:35:52 +08:00
    @XXWHCA ai 大模型火了之后,玩了许多项目感觉 requirements.txt 和 pyproject.toml 并不能完全重现依赖环境,绝大部分都要按着项目里的 rq.txt 先装一遍,然后一个冲突一个冲突逐个解决....
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2642 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 14:14 PVG 22:14 LAX 06:14 JFK 09:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86