当前位置: 首页 > 面试题库 >

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

丁恩
2023-03-14
问题内容

在过去的几年中,我安装了许多具有各种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 有时;
  • 有时编译源代码;

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


问题答案:

为什么搞砸了?

正如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,它显示出使我问这个问题的问题),我发现本教程非常有帮助。这样,问题终于解决了。



 类似资料:
  • 问题内容: 我想在主要安装的Python上更新pip,特别是要获取list命令。其中还包括列表更新功能。 所以我跑了: 一切在安装上看起来都不错,但随后我去运行pip并得到了:(如果有帮助,则包括安装结束) 显然,我有点不高兴,因为这是我的系统安装的python ..我在这里阅读了一些答案,但无法确定最简单的解决方法。 问题答案: 我在linux上也有同样的消息。 但随后检查了正在调用的点。 在我

  • 我有一个独立的库(jar文件),它被添加到应用程序服务器类路径中,以监控JVM中所有正在运行的应用程序,并在出现问题时发送电子邮件。 jar文件将所有依赖项捆绑在jar中(使用maven shade插件),包括javamail jar文件。 当appserver中的其他Web应用程序之一具有javamail作为依赖项时,我的jar文件中的javamail会发生一些依赖冲突,我得到一个异常 我无法修

  • 我是OSGi的新手。我正在Android上运行ApacheFelix。我已将系统包导出的系统包设置如下: 但是,当我尝试安装ConfigAdmin捆绑包时,它会给出一个BundleException: 当我导出组织时,为什么它缺少这个要求。奥斯基。版本1.6的系统包中的框架包。0? 我已通过以下操作检查系统属性设置是否正确: 也许这是我的一个简单错误。有人能帮我吗? 谢谢!

  • 6.2.1. SVN版本库到Git的迁移 6.2.2. Hg版本库到Git的迁移 6.2.3. 通用版本库迁移 6.2.4. Git版本库整理 6.2.4.1. 环境变量过滤器 6.2.4.2. 树过滤器 6.2.4.3. 暂存区过滤器 6.2.4.4. 父节点过滤器 6.2.4.5. 提交说明过滤器 6.2.4.6. 提交过滤器 6.2.4.7. 里程碑名字过滤器 6.2.4.8. 子目录过滤器

  • 我有两个第三方包,它们都依赖于javax.transaction包。此包由系统包导出为版本0.0.0。其中一个bundle导入包的任何版本,并将其声明为导出包的uses约束。另一个包明确要求1.1.0版本。此包由另一个包提供。 我自己的bundle同时需要第三方bundle。但是,由于首先解析系统包,所以接受任何版本的第三方包都是针对版本0.0.0进行连线的。因此,一个包的使用冲突就产生了。 有什

  • 问题内容: 我正在尝试使用Kubernetes创建一堆Pod,服务和部署,但是在运行命令时仍然遇到以下错误。 我已经终止了所有Pod,并尝试重新启动计算机,但这不能解决问题。我不是Linux专家,所以我想知道如何找到所有打开的文件并关闭它们? 问题答案: 您可以通过运行以下命令来确认哪个进程正在占用文件描述符: 这将为您提供打开的FD计数的排序列表以及该过程的pid。然后,您可以查找每个带有w /