如何在不重新安装模块的情况下更新mac python

时间:2014-12-28 07:42:49

标签: python macos python-2.7

首先,抱歉我的英语不好! 我在更新我的python时遇到了一些麻烦。 我原来的mac python 2.7.6仍然保持不变。但是,在我安装python 2.7.9作为应用程序后,python 2.7.9成为我的默认python。也就是说,当我键入python -V指令时,Python 2.7.9显示。 但是我安装的那些模块无法通过Python 2.7.9导入。例如,当我使用python 2.7.6时,我确实安装了numpy,但是"没有名为numpy的模块"安装python 2.7.9后显示。 我的观点是如何将app python 2.7.9链接到那些模块?我没有删除orignal mac python,我想解决这个问题而不这样做。当然,如果删除原始的mac python对我有好处,我会这样做。感谢您帮助我解决此问题。

2 个答案:

答案 0 :(得分:2)

注意: 以下答案假设您从python.org下载的安装程序中安装了Python 2.7.9。如果您使用Homebrew,MacPorts,Anaconda或其他一些发行版,这些说明将无效。


如果您尚未在2.7.9中安装任何第三方模块,那么解决方案非常简单。首先,从命令行运行

cd /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7

然后

ls site-packages

验证除了site-packages文件之外,2.7.9的README文件夹中没有任何内容。然后运行

sudo rm -rf site-packages

删除文件夹。最后,我们会将其符号链接到(我相信的)您当前的site-packages位置:

sudo ln -s /Library/Python/2.7/site-packages /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

你应该全力以赴。例如,通过激活2.7.9并尝试import numpy进行测试。它应该工作得很好。

答案 1 :(得分:-1)

  

PYTHONPATH
  增加模块文件的默认搜索路径。该   format与shell的PATH相同:一个或多个目录   由os.pathsep分隔的路径名(例如Unix [或OSX]上的冒号或分号)   在Windows上)。不存在的目录会被忽略。

“模块文件的默认搜索路径”是您可以通过在终端应用程序中执行以下行来查看的目录列表:

$ python -c "import sys; print sys.path"

您可以将PYTHONPATH环境变量设置为包含旧模块的目录。您可以在文件中设置环境变量:

~/.bashrc

首先,您必须弄清楚旧模块的位置。如果您安装了旧版本的python,那么它们将位于大约此处:

  

/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7.6/site-packages

如果旧版本是python的系统安装,那么旧模块的目录路径将为:

/Library/Python/2.7/site-packages 

(感谢@MattDMo找出那条路径)

打开Finder并按照相应的路径找到旧模块。

获得旧模块的路径后,编辑.bashrc文件。打开终端应用程序(如果需要,然后cd到您的主目录)。然后输入ls -al

  

〜$ ls -al

查看是否列出了.bashrc。如果存在,则在您喜欢的编程文本编辑器中打开它,例如。

  

〜$ vim .bashrc

如果.bashrc文件不存在,那么该命令将创建该文件。接下来,将以下行添加到.bashrc的底部:

export PYTHONPATH="/Library/the rest of the path here"

注意:等号的两边不能有空格。

如果.bashrc中已经有分配给PYTHONPATH的行,那么请改为:

export PYTHONPATH="/Library/the rest of the path here:$PYTHONPATH"

将目录添加到已分配给PYTHONPATH的以冒号分隔的目录列表的前面。

保存文件,退出终端应用程序,然后尝试执行导入其中一个旧模块的python程序。