2

我在 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/我决定删除所有pythonmacports(真的有点吓人,但提到的网站上的文字相当清楚)。请注意,仍然需要macportshomebrew安装和构建pyenv

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

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

一切都解决了。

pyenv一路!R>

4

1 回答 1

1

问题是哪个PIP正在使用?当一个版本PIP(例如系统版本)与多个版本的Python. MacPorts使用版本时避免它的最佳方法Python是始终使用它的版本PIP

关于多个版本的管理Python;如果您在版本port select之间切换时使用它很容易管理。Python我有一个~/.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)

当一切都在同一页面上时,它会使管理方面变得更好。

于 2019-11-22T06:11:33.960 回答