【问题标题】:Manging python packages on Mac OS在 Macos 上管理 python 包
【发布时间】:2020-03-18 03:02:15
【问题描述】:

我在 Mac 上使用 macports 安装 python3。我决定遵循 macports 路径而不是直接下载/安装 Python3,以使其与 Apple 的原生 Python 安装分开。我选择了 Python36,因为它与最近添加的 LabView python 节点兼容。

从那时起,我通过 macports 添加了许多其他软件包:numpy、scipy、Pillow、matplotlib、pandas、jupyter、spyder ......所有依赖项始终得到处理,一切都按预期工作。我什至安装了 PIP (py36-pip) 虽然我从未使用过它。

当我尝试安装“jupyter_contrib_nbextensions”时,问题开始了。该软件包未显示为可用的“macport”。不情愿地,我尝试了 PIP……一切似乎都很好,但在构建阶段收到了大量错误消息。

我想知道。当通过 macports 安装主 python 时,安装附加 python 包的正确协议是什么?

  1. 也许,安装 python 3.x 和相应的 PIP 并使用 PIP 而不是 macports 管理所有其他包?当然,所有的python包都必须通过PIP更新(目前一切都通过macports更新,简单方便)。

  2. ... 或者,由于 jupyter_contrib_nbextensions 是迄今为止我能找到的唯一一个无法工作的软件包,因此破解它并以某种方式“手动”安装?

  3. 还有别的吗?

感谢您的见解。

干杯, 拉德克


(深夜)更新:

在这里阅读了关于多个 python 版本的大量文章后:https://realpython.com/intro-to-pyenv/ 我决定从macports 中删除所有python 包(真的有点吓人,但提到的网站上的文字是合理的 清楚)。请注意,仍然需要macportshomebrew 来安装和构建pyenv

安装pyenv 后,构建python3.6 需要一段时间。我现在可以在 globally(任何目录)或 locally(仅在该目录中)设置的 python 版本之间切换。

PIP 有点令人沮丧,因为它没有安装在“系统”python(在 /usr/bin 中)上,而是安装在 3.6 上。我只是在我的本地 3.6 版本中安装 jupyter .... 扩展即将推出。

一切顺利。

pyenv一路!回复>

【问题讨论】:

    标签: python-3.x macos jupyter macports jupyter-contrib-nbextensions


    【解决方案1】:

    问题是PIP 使用的是哪个?通常当PIP 的一个版本(例如系统版本)与Python 的多个版本相关联时,问题就开始了。使用MacPortsPython 版本时避免它的最佳方法是始终使用它的PIP 版本。

    关于Python多个版本的管理;如果在Python 版本之间切换时使用port select,则很容易管理。我有一个~/.bash_profile 函数,它让我可以非常轻松地在Python 的多个版本和PIP 的版本之间来回切换。

    例如:

    ~/.bash_profile

    # MacPorts Python and PIP version selection
    py() { [[ "$1" = "2" ]] && sudo port select --set python python27 \
    && sudo port select --set pip pip27 && kill -INT $$ && alias pip=pip2; \
    [[ "$1" = "3" ]] && sudo port select --set python python36 \
    && sudo port select --set pip pip36 && kill -INT $$ && alias pip=pip3; \
    echo "Invalid Python version selected." ; }
    

    像这样使用它:

    $ py 2 # switches to Python 2.7 and PIP 2.7
    $ py 3 # switches to Python 3.6 and PIP 3.6
    

    检查版本:

    $ python -V
    Python 3.6.9
    
    $ pip --version
    pip 19.3.1 from /opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pip (python 3.6)
    

    当一切都在同一个页面上时,管理方面会更好。

    【讨论】:

    • 这是有道理的......我无法评论使用了哪个 PIP。我只安装了 3.6:py36-pip、py36-jupyter 等...我尝试使用 port select --set 但我可能错过了一些。
    • @Radek:您可以确定您当前使用的是哪个pipwhich pip,或pip --version
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多