我在Python 2.7中导入时如何覆盖OSX的numpy版本?

问题描述 投票:1回答:2

我想使用numpy 1.9而不删除我的Mac附带的numpy(1.8)版本:

>>> import numpy
>>> numpy.version.version
'1.8.0rc1'
>>> numpy.__file__
'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/__init__.pyc'

由于那个版本的numpy在System,我宁愿不删除它。那就是说,pip认识到我安装了numpy 1.9,但我不知道如何在我的import声明中引用它。

$ pip list
...
numpy (1.9.0)
...

思考?

python python-2.7 numpy
2个回答
1
投票

请务必注意,Mac上有两种不同的Python安装。有系统Python(/usr/bin),还有/usr/local/bin python。

还有两个pip安装。例如:

$ which pip
/usr/local/bin/pip
$ ls -l /usr/local/bin/pip
lrwxr-xr-x  1 dmao  admin  30 Feb 14 19:09 /usr/local/bin/pip -> ../Cellar/python/2.7.9/bin/pip

这是自制的点子。我假设你在自制的pip版本上安装了numpy。

默认情况下没有安装pip的系统版本。通常的解决方案是运行easy_install pip并安装pip的系统版本,然后安装pip install numpy(使用系统点)。但是,你提到你想让系统保持笨拙。


如果你需要保持系统numpy不变,你可以运行/usr/local Python作为默认的Python而不是系统Python。这里我们创建一个从默认python到本地python的符号链接,以便本地python成为默认值。

sudo ln -s /usr/bin/python /usr/local/bin/python

然后,您的默认Python版本将成为与您的默认版本的pip匹配的版本。

您可以通过替换符号链接随时恢复默认的Python版本。 / usr / bin具有您需要的链接。

$ ls -l /usr/bin/ | grep python
lrwxr-xr-x   1 root   wheel        76 Feb 21  2014 pythonw2.5 -> ../../System/Library/Frameworks/Python.framework/Versions/2.5/bin/pythonw2.5
lrwxr-xr-x   1 root   wheel        76 Feb 21  2014 pythonw2.6 -> ../../System/Library/Frameworks/Python.framework/Versions/2.6/bin/pythonw2.6
lrwxr-xr-x   1 root   wheel        76 Feb 21  2014 pythonw2.7 -> ../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/pythonw2.7

或者,如果你的系统Python被用于某些东西,和/或你需要在python包的版本之间切换,你可以使用virtualenv,这使得这更容易。


在Mac上管理python模块的方法有很多种。例如,What is the most compatible way to install python modules on a Mac?


0
投票

对于在2018年达到此目的的任何人,正确的方法是确保您的brew包文件夹位于PATH中的系统包文件夹之前:

  1. Brew install <mypackage> - pythonnumpy在这种情况下
  2. 通过在终端中键入which <package>来测试现在找到brew包而不是系统包。它应该说/usr/local/bin/<package>而不是/usr/bin/<package>
  3. 说明:系统包在/usr/bin中找到,而brew包在/usr/local/..中开始,例如/usr/local/bin/usr/local/opt/<package>/bin
  4. 如果要找到系统包,请在终端中输入echo $PATH来测试您的PATH订单。 /usr/local/..出现在系统路径之前吗?
  5. 如果没有,你需要确保/usr/local/bin/usr/bin之前出现,以便在系统可执行文件之前找到brew安装的可执行文件。
  6. 编辑PATH:在终端中运行export PATH=/usr/local/bin:$PATH并将其放入~/.bash_profile配置文件中以使其永久化
  7. 测试您的PATH更改工作(echo $TEST),并找到您的brew包而不是系统包(which <package>
  8. 一般信息:Brew将在/usr/local/Cellar/..中安装软件包,并将二进制文件(可执行文件)符号链接到/usr/local/bin文件
  9. 故障排除:请注意,Brew有时会安装包含Python3gcc-7等非标准名称的软件包。所以,即使你在PATH中使用/usr/local/bin之前有/usr/bin,当你使用which python进行测试时,它仍然会指向/usr/bin/<package>。在这种情况下,您需要在/usr/local/bin中使用预期的可执行文件名手动创建符号链接。例如,在/usr/local/binln -s python3 python
© www.soinside.com 2019 - 2024. All rights reserved.