代码之家  ›  专栏  ›  技术社区  ›  Scolli03

我用pip安装破坏了嵌入式Python安装

  •  0
  • Scolli03  · 技术社区  · 7 年前

    我在工作中使用内置python脚本的软件。唯一的缺点是它目前没有提供许多有用的模块。查看论坛和对软件的支持,知识库中有关于如何添加新模块的说明。在一些方面一切都很好,但在尝试安装Pandas时,我一直对Numpy有一个失败的依赖关系,尽管Numpy实际上在该python版本的站点包中。

    我做了其他几次尝试,然后遇到了这行代码。

    python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose
    

    我更换了 python 找到了该版本Python的路径并完成了安装。但现在Python版本已经崩溃了。当我在软件中打开脚本编辑器并尝试运行任何代码时,我得到一个错误

    Cannot initialize the script system: Error in line 1:PyEval_EvalFramesEx returned NULL without setting an error.
    

    即使我尝试在控制台中运行该版本的Python,光标也只是向下移动了一行,什么也没有发生。我甚至不能再打字了。

    该软件的旧版本仍然可以正常工作,我认为这是因为它使用的是Python 3.4,而新版本运行的是Python 3.5。我甚至尝试卸载并重新安装该软件以进行干净的安装,但即使在新位置重新安装,我仍然会收到相同的错误。我担心这是Python 3.5软件版本在系统范围内特有的东西。我安装了一个外部Python 3.5,只是为了检查,它运行得很好。只是Python的软件版本现在被破坏了。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Martijn Pieters    7 年前

    您已经安装了带有已编译组件的Python项目,这些组件已加载到Python二进制文件中。这些组件与软件包的嵌入式Python版本冲突(可能无法加载它们)。

    因为你用了 --user 切换到安装这些软件包仍然有办法恢复您的安装。这些软件包都安装在 site.USER_SITE location ,这意味着您可以手动再次删除它们。

    首先,您需要使用一个开关来运行Python,该开关禁止从该位置加载代码。您可以尝试使用 -s switch (这将禁用 USER_SITE 选项)或 -I switch (启用隔离模式,忽略环境变量和 USER\u站点 选项),以验证禁用这些选项实际上会给您一个正常工作的Python提示:

    path/to/software/python -s   # or -I
    

    当这起作用时,您可以运行 site 模块作为脚本,打印出 USER\u站点 目录为:

    path/to/software/python -s -m site   # or -I -m site
    

    查找 USER_SITE: <path> 行,应该以 site-packages . 然后,移动 目录 该目录的其他位置(保留为备份)。然后尝试在没有 -s / -我 再次切换。