【问题标题】:How to move old libraries of previous version python to new version of python如何将以前版本python的旧库移动到新版本python
【发布时间】:2011-01-24 11:36:37
【问题描述】:

我正在使用 Ubuntu。我安装了更新版本的python。但是我安装的所有库,如 imdbPy、NumPy、Cython 等都可以在版本号为 2.6.6 的以前版本的 python 中运行。

当我在 2.6.6 中导入 Cython 时,tt 可以工作,但我在 2.7.0+ 版本的 python 中尝试同样的事情

import cython

出现如下错误:

import cython
ImportError: No module named cython

我需要更改 bash 中使用的默认 python 版本。我想,我可以通过修改 bash 配置文件来处理它。我还想将所有这些库移动到适当的位置,以便新版本的 python 可以永久访问它们。

【问题讨论】:

  • 你的第二个例子大写 Cython,python 区分大小写,所以不要这样做。

标签: python pythonpath


【解决方案1】:

不要弄乱您的系统安装 - 包管理器应该对此负责。确保从源代码安装时,在单独的目录中进行。

我在我的主目录中安装东西。我喜欢 jhbuild,所以我用它来并排维护不同版本的 python:https://thomas.apestaart.org/thomas/trac/browser/jhbuild/python

从该结帐处运行 make 将构建 python 2.3-2.7 并创建脚本以进入其环境:

[thomas@level ~]$ py-2.4 
Entering interactive py shell /bin/bash
[py-2.4] [thomas@level ~]$ python
Python 2.4.5 (#1, Dec 16 2010, 18:51:06) 
[GCC 4.4.4 20100630 (Red Hat 4.4.4-10)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

【讨论】:

    【解决方案2】:

    尝试使用setuptools 重新安装库。实际上,我建议重新安装而不是尝试在 Python 2.7 中使用旧的 2.6 库,因为可能存在一些不兼容。

    【讨论】:

    • 你能回答我的另一个问题,我应该怎么做才能更改我的默认 python 版本?是的,当我删除旧版本时,我的计算机中只有新版本的 python。但是,请您假设我没有卸载旧版本的 python。我该怎么办?
    • 我问这个的原因是,包管理器威胁我说如果我删除 python 2.6,很多依赖项都会随之删除。
    【解决方案3】:

    您需要重新安装新版本的所有库。

    我建议您先下载 pip 并安装它。之后,您可以使用/path/to/Python27/bin/pip install <packagename> 安装大多数软件包,例如

    /opt/python27/bin/pip install Cython
    

    【讨论】:

      【解决方案4】:

      显然,一个包管理工具是要走的路,因为它们应该能够设置我将要提到的所有东西(加上检查兼容性和依赖项)但是如果你遇到任何问题,这里有一些可能会有所帮助的东西您选择的包管理器存在问题:

      在进行更改之前,请在 bash 中使用 echo $PATH 检查 PATH。目录按搜索顺序列出。

      您可以通过更改PATH 中的目录顺序来确定bash 中使用的python 版本,以便您想要的版本首先出现在PATH 中。

      例如,如果您想要opt/local/bin 中的python 版本而不是usr/local/bin 中的python 版本,您可以在.bash_profile.bashrc 文件中设置PATH,并使用如下行:

      export PATH=opt/local/bin:$PATH

      您可以检查正在使用的 python bash 的文件路径: which python(在 bash 中输入)

      关于库,请确保bash中的PYTHONPATH和python中的sys.path设置正确,以便找到合适的库,并使用更新和兼容的版本而不是旧的。您还可以创建 .pth 文件,其中包含要添加到 sys.path 的目录的路径,并且可以在 bash 中使用 PYTHONSTARTUP 在启动时运行设置 sys.path 的模块。

      除非您在一个单独的文件夹中为特定版本的 python 有一套全新的库,否则您可能会遇到问题,特别是因为许多库将依赖其他库,因此可能会使用彼此的过时版本。

      如果sys.path 上有多个模块使用相同的名称,它们可能会发生冲突。

      你可以像这样检查你导入的python模块的目录路径:

      import Cython
      print Cython.__file__
      

      希望您选择的包管理器会处理所有这些问题,但如果遇到问题,您至少可以仔细检查您的路径。

      【讨论】:

        猜你喜欢
        • 2020-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-03
        • 1970-01-01
        相关资源
        最近更新 更多