ubuntu中python的冲突版本

Jor*_*lva 5 python ubuntu

所以我的服务器上有python 2.7.2,我需要将它更新为python 2.7.3.所以我试图删除2.7.2版本,然后使用源安装新版本.我无法删除2.7.2版本因为系统使用它来运行服务器上的关键服务,所以我安装了2.7.3版本,希望之后我能够删除旧版本.仍然我不能删除旧版本,虽然我能够执行python 2.7.3当我安装任何模块我不能导入它.我添加了sys.path的路径,我开始找到模块,但导入它会导致另一个错误.

我的python执行/ usr/local/bin/python这是问题所在的2.7.3版本.如果我尝试像这样/ usr/bin/python执行python它执行旧版本,一切正常,我可以导入新安装的模块.

那么我该怎么做才能让python 2.7.3工作呢?

我搜索了很多教程,并尝试了在python上添加.pth文件中的库,我开始找到模块但是在导入时我得到这样的错误:

>>> import numpy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/numpy/__init__.py", line 137, in <module>
    import add_newdocs
  File "/usr/local/lib/python2.7/dist-packages/numpy/add_newdocs.py", line 9, in <module>
    from numpy.lib import add_newdoc
  File "/usr/local/lib/python2.7/dist-packages/numpy/lib/__init__.py", line 4, in <module>
    from type_check import *
  File "/usr/local/lib/python2.7/dist-packages/numpy/lib/type_check.py", line 8, in <module>
    import numpy.core.numeric as _nx
  File "/usr/local/lib/python2.7/dist-packages/numpy/core/__init__.py", line 5, in <module>
    import multiarray
ImportError: /usr/local/lib/python2.7/dist-packages/numpy/core/multiarray.so: undefined symbol: PyUnicodeUCS4_AsUnicodeEscapeString
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助

解决了编辑问题

因此,为了解决缺少的导入模块,我在/usr/local/lib/python2.7/site-packages/下创建了一个.pth文件,其中包含python模块所在的目录,python开始找到它们.要解决可兼容性问题,可以从源代码安装python并指定unicode做./configure --enable-unicode

更多信息在这里

Lie*_*yan 5

永远不要搞乱系统python,永远.

你应该做的是将带有--prefix的python 2.7.3安装到你的主目录中,然后使用virtualenv -p /home/myuser/path/to/python.

在任何情况下,使用virtualenv运行自己的应用程序几乎总是一个好主意,因为它避免使用您在自己的应用程序中使用的库来污染系统包目录.


Mar*_*rty 2

您安装的模块似乎是针对旧版本的 Python 构建的,或者至少是与新安装的版本不兼容的版本。您在底部看到的导入错误是 numpy 模块正在搜索 2.7.3 版本中不存在的符号。这里有更多信息。

如果可能的话,使用包管理器升级 Python 通常会更容易。这样,如果您的系统上有任何东西依赖于 Python,但并不完全需要 2.7.2,那么 Python 就可以轻松升级,而不会干扰任何东西。我猜测您的服务器没有可用的较新版本的 Python 并且您无法添加新的存储库,或者您无权访问包管理器。如果可以使用包,我会继续删除您从源代码构建的内容(如果 Python 使用 GNU Make,命令应该是“make clean”)。

如果这不是一个选项,那么应该有一种方法来编译 Python,但不将其安装到系统目录中。然后,您可以为用户添加符号链接,并确保符号链接在其路径中具有优先级。