如何将以前版本python的旧库移动到新版本的python

时间:2011-01-24 11:36:38

标签: python pythonpath

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

当我在2.6.6中导入Cython时,tt有效,但我在2.7.0+版本的python中尝试相同的东西

import cython

发生如下错误:

import cython
ImportError: No module named cython

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

4 个答案:

答案 0 :(得分:2)

不要搞乱你的系统安装 - 包管理器应该对此负责。确保从源代码安装时,可以在单独的目录中执行此操作。

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

从该checkout运行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.
>>> 

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

/opt/python27/bin/pip install Cython

答案 3 :(得分:0)

显然,包管理工具是可行的方法,因为它们应该能够设置我要提及的所有内容(以及检查兼容性和依赖性),但这里有一些可能对你有帮助的东西。您选择的软件包管理器存在问题:

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

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

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

export PATH=opt/local/bin:$PATH

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

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

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

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

您可以检查已导入的python模块的目录路径,如下所示:

import Cython
print Cython.__file__

希望所有这些都由您选择的包管理员处理,但如果您遇到麻烦,至少可以仔细检查您的路径。