5

所以我的服务器上有 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

谢谢您的帮助

编辑问题已解决

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

更多信息在这里

4

4 回答 4

5

永远不要弄乱系统 python,永远。

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

无论如何,使用 virtualenv 来运行您自己的应用程序几乎总是一个好主意,因为它可以避免您在自己的应用程序中使用的库污染系统包目录。

于 2013-10-08T11:23:04.960 回答
2

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

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

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

于 2013-10-08T12:45:28.640 回答
2

安装python时使用以下步骤
使用前缀指定安装目录

 ./configure --prefix=/usr/bin/python
 make
 make install

然后每次你运行一个你指定的新终端

export PATH="$PATH:/usr/bin/"

告诉Python的安装目录在哪里

这样你就可以使用任意数量的蟒蛇

于 2015-11-30T17:41:22.830 回答
0

您可以从 R 安装 python 库。它适用于我。

例如,要从 R 类型安装 numpy 库:

system('python -m pip install -U numpy')
于 2016-09-26T21:51:56.243 回答