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

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

  •  
  •   MID · 2023-01-28 16:14:40 +08:00 · 5649 次点击
    这是一个创建于 666 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    53 条回复    2023-06-19 22:19:52 +08:00
    xtinput
        1
    xtinput  
       2023-01-28 16:18:36 +08:00
    和 java 没啥区别,一样多版本同时使用
    gowl
        2
    gowl  
       2023-01-28 16:30:00 +08:00
    PyCharm
    seanzxx
        3
    seanzxx  
       2023-01-28 16:34:35 +08:00   ❤️ 4
    java 的版本问题其实更多,oracle jdk, openjdk, zulu jdk ,然后又有不同的版本,现在半年出一个新版本,每个版本又有新功能。

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

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

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

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

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

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

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

    virtualenv venv
    source vent/bin/activate

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

    直接使用 python3 就行,什么都不用安装
    nuistzhou
        38
    nuistzhou  
       2023-01-29 01:25:24 +08:00 via iPhone
    因为 Mac os 自带 python ,而且系统依赖这个自带的。所以建议自己玩 python ,就搞个这种虚拟环境的 python 去随便玩,不影响系统自带的这个。
    Laussan
        39
    Laussan  
       2023-01-29 01:31:53 +08:00
    我现在觉得 miniconda 最好
    ByteCat
        40
    ByteCat  
       2023-01-29 03:43:46 +08:00
    我用的 mambaforge ,M1 支持得很好,用了两年了
    jayeli
        41
    jayeli  
       2023-01-29 09:01:48 +08:00   ❤️ 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  
       2023-01-29 10:49:08 +08:00 via iPhone
    不经常用 python 的话,直接 pycharm 让他自动检测安装吧,小白友好
    SuperChenCN
        43
    SuperChenCN  
       2023-01-29 11:21:11 +08:00
    miniconda +1
    howie6879
        44
    howie6879  
       2023-01-29 11:52:39 +08:00
    可以参考我这边博文的环境管理部分:

    https://www.howie6879.cn/post/2021/14_about_python_env/
    brucedone
        45
    brucedone  
       2023-01-29 12:44:54 +08:00
    miniconda ,搞 python 是没办法脱离虚拟环境管理的
    sidkang
        46
    sidkang  
       2023-01-29 13:06:34 +08:00
    pyenv 的文档都能觉得烦,我是觉得蛮诧异的,楼上居然都觉得合理么,😂
    Jface
        47
    Jface  
       2023-01-29 13:56:34 +08:00 via iPhone
    @lrigi
    @jayeli 感谢两位!
    MID
        48
    MID  
    OP
       2023-01-29 14:54:13 +08:00
    Stlin
        49
    Stlin  
       2023-01-29 16:44:24 +08:00
    miniconda 挺好用的
    julyclyde
        50
    julyclyde  
       2023-01-30 09:17:15 +08:00
    首先,系统自带 python3 ,不过 pip 的时候你需要--user

    其次,你如果选 pyenv (或者 asdf 之类的),那 pyenv 本身用啥来运行呢?其实还是依赖于某个 python
    窃以为现在多版本 python 已经没有时候啥意义了。多环境隔离才是硬需求
    zhongjiajie
        51
    zhongjiajie  
       2023-02-09 09:04:45 +08:00
    pyenv +
    zhongjiajie
        52
    zhongjiajie  
       2023-02-09 09:08:48 +08:00
    我目前是 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
    sickoo
        53
    sickoo  
       2023-06-19 22:19:52 +08:00
    miniconda 结合 pycharm ,那如何优雅的 install package ,打开终端 -> 激活虚拟环境 -> conda install xxx ?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2817 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 09:28 · PVG 17:28 · LAX 01:28 · JFK 04:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.