在 Mac OS 上管理 python 个包
Manging python packages on Mac OS
我正在 Mac 使用 macports 安装 python3。我决定遵循 macports 路径而不是直接 Python3 download/install 以使其与 Apple 的本机 Python 安装分开。我选择了 Python36,因为它与最近添加的 LabView python 节点兼容。
从那时起,我通过 macports 添加了许多其他软件包:numpy、scipy、Pillow、matplotlib、pandas、jupyter、spyder,...所有依赖项都得到了处理,一切都按预期工作。我什至安装了 PIP (py36-pip),尽管我从未使用过它。
当我尝试安装 "jupyter_contrib_nbextensions" 时出现问题。该包未显示为可用 "macport"。不情愿地,我尝试了 PIP ...一切似乎都很好,但在构建阶段收到了大量错误消息。
我在想。当通过 macports 安装主 python 时,安装附加 python 软件包的正确协议是什么?
也许,安装 python 3.x 和相应的 PIP 并使用 PIP 而不是 macports 管理所有其他包?当然,所有 python 包都必须通过 PIP 更新(目前所有内容都通过 macports 更新,简单方便)。
... 或者,由于 jupyter_contrib_nbextensions 是目前为止我能找到的唯一无法使用的软件包,破解它并以某种方式安装 "manually"?
还有别的吗?
感谢您的见解。
干杯,
拉德克
(深夜)更新:
在阅读了关于多个 python 版本的大量文章后:https://realpython.com/intro-to-pyenv/ 我决定从 macports
中删除所有 python
包(真的有点可怕,但是上述网站上的文字 合理 清晰)。请注意,仍然需要 macports
或 homebrew
来安装和构建 pyenv
安装 pyenv
后,构建 python3.6 需要一段时间。我现在可以在 python
版本之间切换,设置为 globally(任何目录)或 locally(仅在该目录中)。
PIP
有点令人沮丧,因为它没有安装在 "system" python(在 /usr/bin 中),而是安装在 3.6 上。我只是在我的本地 3.6 版本中安装 jupyter
....接下来会进行扩展。
一切顺利。
pyenv
一路走好! R>
问题是 PIP
正在使用哪些?当 PIP
的一个版本(例如系统版本)以某种方式与 Python
的多个版本相关联时,问题通常就开始了。在使用 Python
的 MacPorts
版本时避免它的最佳方法是始终使用它的 PIP
版本。
关于多版本管理Python
;如果在 Python
版本之间切换时使用 port select
,则很容易管理。我有一个 ~/.bash_profile
函数,它使我可以非常轻松地在 Python
的多个版本及其 PIP
.
版本之间来回切换
例如:
在~/.bash_profile
# MacPorts Python and PIP version selection
py() { [[ "" = "2" ]] && sudo port select --set python python27 \
&& sudo port select --set pip pip27 && kill -INT $$ && alias pip=pip2; \
[[ "" = "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)
当所有内容都在同一个页面上时,管理方面会好很多。
我正在 Mac 使用 macports 安装 python3。我决定遵循 macports 路径而不是直接 Python3 download/install 以使其与 Apple 的本机 Python 安装分开。我选择了 Python36,因为它与最近添加的 LabView python 节点兼容。
从那时起,我通过 macports 添加了许多其他软件包:numpy、scipy、Pillow、matplotlib、pandas、jupyter、spyder,...所有依赖项都得到了处理,一切都按预期工作。我什至安装了 PIP (py36-pip),尽管我从未使用过它。
当我尝试安装 "jupyter_contrib_nbextensions" 时出现问题。该包未显示为可用 "macport"。不情愿地,我尝试了 PIP ...一切似乎都很好,但在构建阶段收到了大量错误消息。
我在想。当通过 macports 安装主 python 时,安装附加 python 软件包的正确协议是什么?
也许,安装 python 3.x 和相应的 PIP 并使用 PIP 而不是 macports 管理所有其他包?当然,所有 python 包都必须通过 PIP 更新(目前所有内容都通过 macports 更新,简单方便)。
... 或者,由于 jupyter_contrib_nbextensions 是目前为止我能找到的唯一无法使用的软件包,破解它并以某种方式安装 "manually"?
还有别的吗?
感谢您的见解。
干杯, 拉德克
(深夜)更新:
在阅读了关于多个 python 版本的大量文章后:https://realpython.com/intro-to-pyenv/ 我决定从 macports
中删除所有 python
包(真的有点可怕,但是上述网站上的文字 合理 清晰)。请注意,仍然需要 macports
或 homebrew
来安装和构建 pyenv
安装 pyenv
后,构建 python3.6 需要一段时间。我现在可以在 python
版本之间切换,设置为 globally(任何目录)或 locally(仅在该目录中)。
PIP
有点令人沮丧,因为它没有安装在 "system" python(在 /usr/bin 中),而是安装在 3.6 上。我只是在我的本地 3.6 版本中安装 jupyter
....接下来会进行扩展。
一切顺利。
pyenv
一路走好! R>
问题是 PIP
正在使用哪些?当 PIP
的一个版本(例如系统版本)以某种方式与 Python
的多个版本相关联时,问题通常就开始了。在使用 Python
的 MacPorts
版本时避免它的最佳方法是始终使用它的 PIP
版本。
关于多版本管理Python
;如果在 Python
版本之间切换时使用 port select
,则很容易管理。我有一个 ~/.bash_profile
函数,它使我可以非常轻松地在 Python
的多个版本及其 PIP
.
例如:
在~/.bash_profile
# MacPorts Python and PIP version selection
py() { [[ "" = "2" ]] && sudo port select --set python python27 \
&& sudo port select --set pip pip27 && kill -INT $$ && alias pip=pip2; \
[[ "" = "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)
当所有内容都在同一个页面上时,管理方面会好很多。