V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MID
V2EX  ›  macOS

求一个在 mac 上使用 Python 的姿势

  •  
  •   MID · 53 天前 · 3454 次点击
    这是一个创建于 53 天前的主题,其中的信息可能已经有所发展或是发生改变。

    对 Python 一直不是很了解,直接 brew install python 可以吗?网上搜索都是说需要安装 pyenv 比较优雅。不是 Python 开发者,只是偶尔需要写一点 python script

    请问直接用 brew install python 还是 brew install pyenv ?

    感觉 Python 版本问题好麻烦啊,java 的话,直接网上下载一个包,拖进去就能用 IDEA 用了,版本问题根本不存在

    52 条回复    2023-02-09 09:08:48 +08:00
    xtinput
        1
    xtinput  
       53 天前
    和 java 没啥区别,一样多版本同时使用
    gowl
        2
    gowl  
       53 天前
    PyCharm
    seanzxx
        3
    seanzxx  
       53 天前   ❤️ 4
    java 的版本问题其实更多,oracle jdk, openjdk, zulu jdk ,然后又有不同的版本,现在半年出一个新版本,每个版本又有新功能。

    推荐使用 pyenv 或者 asdf 这种版本管理软件

    brew install python 安装的版本总是会安装最新的版本,而且你 pip 安装 library 的话,都和 brew 混在一起,感觉不好。

    pyenv / asdf 可以支持安装多个版本,不同的项目 /目录自动激活对应的版本
    我喜欢 配合上 pipenv 使用,python 和 library 统一管理
    MID
        4
    MID  
    OP
       53 天前
    @seanzxx 感谢回复,其实两年前使用过 pyenv ,但是现在文档都看不下去了,感觉好复杂...

    我个人想了一下,py 用的太少了,pip 什么的项目可以在 pycharm 里面弄,也不影响外面的。
    jayzau1973
        5
    jayzau1973  
       53 天前
    anaconda
    Lockeysama
        6
    Lockeysama  
       53 天前   ❤️ 2
    搞个 miniconda 最方便吧,隔离 Python 版本,隔离环境。。不影响系统自带版本的 Python
    ospider
        7
    ospider  
       53 天前
    miniconda 。pyenv 和 venv 的功能都有了,比较省心。
    wu67
        8
    wu67  
       53 天前
    我选择 docker, 只要不是特别奇怪的东西, 我现在都优先考虑 docker 搭环境了
    MID
        9
    MID  
    OP
       53 天前
    @wu67 docker 基于 linux ,在 mac 上等于先运行一个虚拟机,再配置环境,感觉损耗好大啊
    wu67
        10
    wu67  
       53 天前
    @MID 但是不会遇到奇奇怪怪的问题, 也不会遇到像公司的代码只能跑在特定版本上, 而我想装个最新的环境造轮子. 个人觉得 docker 真的是天生适合多版本共存.
    dudu2017
        11
    dudu2017  
       53 天前   ❤️ 1
    用 Homebrew 和 pyenv 下载的 Python 运行脚本是都行,搞清楚 Python 版本和虚拟环境是什么就可以。

    我的使用习惯:
    1 、Homebrew 管理的 Python 版本基本不动他,只用于其他 Homebrew 下载软件的依赖。
    2 、开发使用 pyenv 管理 Python 版本,不用的项目使用不用的版本的 Python ,用原生模块 venv 创建不同的虚拟环境进行 Package 管理
    dudu2017
        12
    dudu2017  
       53 天前
    @dudu2017 不用的项目使用不用的版本--> 不同的项目使用不同的版本
    GabrielleBellamy
        13
    GabrielleBellamy  
       53 天前   ❤️ 1
    brew install 的 python 会装在 HomeBrew 自己的路径里,这个路径与系统默认的路径可能有别,因此如果你解释器路径设置的不是这个,那么到时候会调用不到,如楼上所说,最好只用于 HomeBrew 的环境依赖。其他的方法还有很多,无论是直接从官网装 python 还是搭虚拟环境,都得弄清楚路径就行。另一个是注意电脑的芯片架构,一旦路径多,装包又分不同的架构,就需要仔细检查运行环境。
    quzard
        14
    quzard  
       53 天前 via iPhone
    anaconda
    FarmerChillax
        15
    FarmerChillax  
       53 天前
    楼主提到就写写 python script ,其实就没必要上多版本了,直接 python3 装个最新的就完善了。
    #3 说的对,java 的版本问题其实更多
    stein42
        16
    stein42  
       53 天前
    brew 可以安装指定版本的 python ,例如:
    brew install [email protected]
    项目里面基于指定版本的 python 建一个 venv 就够了。

    pyenv 通常需要编译,要先安装好编译器和依赖库。

    conda 也是不错的选择。
    ddvswgg
        17
    ddvswgg  
       53 天前 via iPhone
    Miniconda
    webcape233
        18
    webcape233  
       53 天前 via iPhone
    brew install 然后 python -m venv
    clrss
        19
    clrss  
       53 天前
    写脚本用 Xcode.app 或者 CommandLineTools 自带的就行.

    ```
    % which python3
    /usr/bin/python3 # 这是个 wrapper, 实际用的是:
    % xcrun --find python3
    /Applications/Xcode.app/Contents/Developer/usr/bin/python3
    ```

    pip3 install 时记得加个--user
    Thecosy
        20
    Thecosy  
       53 天前
    我是 anaconda
    BMPixel
        21
    BMPixel  
       53 天前
    @MID 其实损耗还行,docker 比虚拟机高效多了,性能的话似乎会折个 10-20%?然后你的下载的 python 镜像大约 500M ,同时 docker 后台不管你干什么差不多用 2-4G 内存(在 docker 里设置)。
    考虑到我用了三年的 conda 环境现在有 13 个 G ,而且 docker 配合上 vscode 的 devcontainer ,可以让我进入任何语言的项目时立刻得到完整的配置,因此我现在已经把电脑里的各种包全删了
    jayeli
        22
    jayeli  
       53 天前   ❤️ 1
    miniconda + venv
    leverestfish
        23
    leverestfish  
       53 天前
    投 miniconda 一票
    jayeli
        24
    jayeli  
       53 天前
    @jayeli 如果嫌弃 conda 慢的话,可以试试 micromamba ,兼容已存在的 conda 环境
    Jface
        25
    Jface  
       53 天前
    谢谢大家,被安利了 miniconda ,马上去了解了解。
    IvanLi127
        26
    IvanLi127  
       53 天前 via Android
    我觉得直接上 dev container 是最优雅的了,直接抹平各种环境问题
    Jface
        27
    Jface  
       53 天前
    @jayeli #22 小白请教一个问题 ,这么使用的话,是不是每个项目都需要单独新建一个环境?那么项目多起来的话,是不是垃圾文件就会很多?
    FozillaMox
        28
    FozillaMox  
       53 天前
    如果只是偶尔写一下 python 的话,macOS 已经预装 python3 了,相信已经满足你的需求。
    yescola
        29
    yescola  
       53 天前 via iPhone
    跪着
    SuperMild
        30
    SuperMild  
       53 天前
    感觉 miniconda 的隔离逻辑是最清晰的。
    sshang
        31
    sshang  
       53 天前
    anaconda
    yangxin0
        32
    yangxin0  
       53 天前
    conda
    angkec
        33
    angkec  
       53 天前
    brew install python

    virtualenv venv
    source vent/bin/activate

    就可以了
    noqwerty
        34
    noqwerty  
       53 天前 via iPhone
    brew install micromamba
    1014982466
        35
    1014982466  
       53 天前
    上面说的都好麻烦。没有理由不用 miniconda
    lrigi
        36
    lrigi  
       53 天前 via iPhone   ❤️ 1
    @Jface 不需要每个项目一个环境,就是普通的 python 代码对于库的小版本号没那么高的要求,这样平时都用一个环境差不多就够了。(个人是这样的,商业生产环境可能需要每个项目一个环境吧
    lanlanye
        37
    lanlanye  
       53 天前
    我觉得你要是本身不熟悉 Python 的话说明不是特别在意版本,那 macOS 原装的就可以直接用了吧……

    直接使用 python3 就行,什么都不用安装
    nuistzhou
        38
    nuistzhou  
       53 天前 via iPhone
    因为 Mac os 自带 python ,而且系统依赖这个自带的。所以建议自己玩 python ,就搞个这种虚拟环境的 python 去随便玩,不影响系统自带的这个。
    Laussan
        39
    Laussan  
       53 天前
    我现在觉得 miniconda 最好
    ByteCat
        40
    ByteCat  
       53 天前
    我用的 mambaforge ,M1 支持得很好,用了两年了
    jayeli
        41
    jayeli  
       53 天前   ❤️ 1
    @Jface #27 创建带有不同版本 Python 解释器的 conda 环境就可以了,之后直接用 venv 。

    miniconda 装完之后自带一个 Python 解释器( conda 的 base 环境),你可以直接用 `~/miniconda3/bin/python -m venv ./.venv` 创环境。当你对 Python 有其他版本的需求时,可以使用 conda 再创建一个环境,像这样 `conda create -n python36 -c conda-forge python=3.6`,此时就可以和之前一样使用 Python 3.6 的解释器创建 venv 环境,`~/.conda/envs/python36/bin/python -m venv ./.venv`。

    microbamba 是用 C++ 实现,只有一个可执行文件,更轻更快,同时兼容 conda 环境。官网说目前还处于早期阶段,不过用下来没什么问题。它的用法和 conda 一样,上手也很快,值得一试。
    zhangzEric
        42
    zhangzEric  
       53 天前 via iPhone
    不经常用 python 的话,直接 pycharm 让他自动检测安装吧,小白友好
    SuperChenCN
        43
    SuperChenCN  
       53 天前
    miniconda +1
    howie6879
        44
    howie6879  
       53 天前
    可以参考我这边博文的环境管理部分:

    https://www.howie6879.cn/post/2021/14_about_python_env/
    brucedone
        45
    brucedone  
       53 天前
    miniconda ,搞 python 是没办法脱离虚拟环境管理的
    sidkang
        46
    sidkang  
       53 天前
    pyenv 的文档都能觉得烦,我是觉得蛮诧异的,楼上居然都觉得合理么,😂
    Jface
        47
    Jface  
       53 天前 via iPhone
    @lrigi
    @jayeli 感谢两位!
    MID
        48
    MID  
    OP
       53 天前
    Stlin
        49
    Stlin  
       52 天前
    miniconda 挺好用的
    julyclyde
        50
    julyclyde  
       52 天前
    首先,系统自带 python3 ,不过 pip 的时候你需要--user

    其次,你如果选 pyenv (或者 asdf 之类的),那 pyenv 本身用啥来运行呢?其实还是依赖于某个 python
    窃以为现在多版本 python 已经没有时候啥意义了。多环境隔离才是硬需求
    zhongjiajie
        51
    zhongjiajie  
       42 天前
    pyenv +
    zhongjiajie
        52
    zhongjiajie  
       42 天前
    我目前是 pyenv + pyenv-virtualenvwrapper 组合,基本上能解决多个 python 版本,以及同一个版本下多个项目依赖的问题
    pip install pyenv
    brew install pyenv-virtualenvwrapper

    # 安装一个新 version 的 python
    pyenv install python3.11
    pyenv global python3.11

    pyenv virtualenvwrapper
    mkvirtualenv new_project
    关于   ·   帮助文档   ·   博客   ·   nftychat   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   4476 人在线   最高记录 5556   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 62ms · UTC 07:40 · PVG 15:40 · LAX 00:40 · JFK 03:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.