一尘不染

我的系统上的Python版本过多,导致出现问题

python

在过去的几年中,我安装了许多具有各种Python版本的Python库。为了使它们可以立即工作,我在不受控制的情况下盲目安装了它们。目前,当我尝试安装调用numpy,scipy和matplotlib的pynest时,它们正在引起问题。经过努力后,我将清理并重新安装Python和库。

经过调查,我在系统上发现Python 2.5 / 2.6 / 2.7 / 3.2,并且每个系统都有以下副本或其他东西:(我的OS == Mac OS X
10.7.5 Lion

  • /Library/Frameworks/
  • /opt/local/Library/Frameworks/
  • /opt/local/bin/
  • /Applications/
  • /usr/local/bin/
  • /usr/bin/
  • /System/Library/Frameworks/

我知道我为拥有这些而疯狂。现在,我删除了其中的所有内容/System/Libarary/Frameworks(从未从中删除任何内容/System/Library/)。清理工作后,which python现在给出/usr/bin/python与的链接/System/Library/Frameworks

现在,重新安装python是否对我来说是一个清晰的环境?如何再次检查是否没有其他版本?我应该如何重新安装它们以确保它们和它们的库不会无处不在并且又有很多副本?

我想将干净的Python
2.7安装到正确的位置,并让我的系统确切知道它的位置,并且永远不要在其他位置安装任何库。请给我一些有关如何以专业方式进行管理的建议。

供您参考,这是我目前的信息$PATH,我认为应该对其进行修改:

/opt/local/bin:/opt/local/sbin:/opt/nest/lib/python2.7/site-packages:/usr/local/lib/python2.7/site-packages:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/texbin:/Library/Frameworks/Python.framework/Versions/3.2/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin:/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/django/bin:/usr/X11/bin:/opt/local/bin:/opt/local/sbin:/usr/local/lib/python2.7/site-packages:/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.2/bin

请让我知道是否需要更多信息。谢谢!


更新

我正在重新思考为什么它变得如此疯狂。我相信这是因为我通过以下方式安装了东西:

  • easy_install/ macports/ homebrew/ fink/pip有时;
  • .dmg 有时;
  • .pkg 有时;
  • 有时编译源代码;

他们在不同的地方制作东西。我想知道这些方法背后的机制是什么?他们如何选择目标位置?如何防止他们搞砸呢?


阅读 601

收藏
2021-01-20

共1个答案

一尘不染

为什么搞砸了?

正如OP的更新所述,有两种不同的安装Python的方式,它们将文件放置在不同的位置。例如,macports把东西放进去/opt/local/,而homebrew把东西放进去/usr/local/。另外,Mac
OS X附带了一些python版本。因此,如果您通过不同的方式多次安装python,您将 获得许多独立存在 于系统上的 python版本

它引起什么问题?

我不知道
我猜问题是,如果您有许多版本的python,那么要使用哪个版本以及在哪里找到软件包,将分别由系统中的路径顺序PATH以及PYTHONPATH相应的路径决定。因此,您可能无法控制在哪里安装python模块。考虑一下,如果您运行sudo python setup.py install安装模块(它通过根目录找到python PATH),然后尝试通过import该模块python -c "import it"(这次它通过您的目录找到python
PATH),则可能出问题了。这是我的猜测,我没有验证。但就我自己而言,确实出现了问题。

如何避免这种情况?

我认为原则是 要意识到不同的方式和工具 会将 事物独立地安装到不同的位置,因此请谨慎使用

  • 除非您打算这样做,否则请不要通过不同的方式两次安装相同的东西。(如果您打算将其用于python,则可能要签出virtualenv
  • 留意您的路径顺序,PATH并考虑是否正确。
  • 安装模块时,请清除正在运行哪个python(或pip)以及模块的安装位置。

那么,我该如何解决自己的情况呢?

由于它已经弄糟了,而且似乎很难治愈,所以最后我通过 重新安装完整的OS 来解决了这个问题,并开始遵循上面的 DO-and-DONT
。对于使用python安装科学环境(numpy / scipy /
matplotlib,它显示出使我问这个问题的问题),我发现本教程非常有帮助。这样,问题终于解决了。

2021-01-20