MID
V2EX  ›  macOS

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

  •  
  •   MID · Jan 28, 2023 · 7663 views
    This topic created in 1374 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

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

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

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

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

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

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

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

    virtualenv venv
    source vent/bin/activate

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

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

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

    其次,你如果选 pyenv (或者 asdf 之类的),那 pyenv 本身用啥来运行呢?其实还是依赖于某个 python
    窃以为现在多版本 python 已经没有时候啥意义了。多环境隔离才是硬需求
    zhongjiajie
    zhongjiajie
    Feb 9, 2023
    51
    pyenv +
    zhongjiajie
    zhongjiajie
    Feb 9, 2023
    52
    我目前是 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
    sickoo
    Jun 19, 2023
    53
    miniconda 结合 pycharm ,那如何优雅的 install package ,打开终端 -> 激活虚拟环境 -> conda install xxx ?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1745 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 118ms · UTC 23:57 · PVG 07:57 · LAX 15:57 · JFK 18:57
    ♥ Do have faith in what you're doing.