安装具有aptitude的包时有多个版本的python

时间:2012-01-22 21:12:16

标签: python numpy aptitude

在我不能破坏事物的实验室机器上,似乎安装了多个版本的python。

如果我是python --version,我看到2.7.1。

我已经通过“apt-get install numpy”安装了numpy并且它已经安装了,但是当我尝试导入它时却找不到它。

当我在机器上查找numpy时,我会在/usr/lib/python2.5/site-packages/numpy文件夹中看到它。我认为这是问题... apt-get将它放在2.5版本而不是2.7版本中。

我该如何解决这个问题?有没有办法告诉apt-get我在安装时正在谈论哪个python?或者我是否放弃资质并使用点子或什么?

4 个答案:

答案 0 :(得分:4)

如果你想在一台机器上使用多个版本的python,你应该调查virtualenv

  

virtualenv是一个创建孤立的Python环境的工具。

     

正在解决的基本问题是依赖关系和版本之一,   和间接权限。想象一下,你有一个需要的应用程序   LibFoo的第1版,但另一个应用程序需要版本2.如何   你能同时使用这两个应用吗?如果您安装所有内容   /usr/lib/python2.7/site-packages(或任何平台的标准   位置是),很容易在你的情况下结束   无意中升级了不应升级的应用程序。

     

或者更一般地说,如果您想安装应用程序,该怎么办?   离开吧?如果应用程序有效,则其库或文件中的任何更改   这些库的版本可以破坏应用程序。

     

此外,如果您无法将软件包安装到全局网站包中,该怎么办?   目录?例如,在共享主机上。

     

在所有这些情况下,virtualenv可以帮助您。它创造了一个环境   它有自己的安装目录,不共享   具有其他virtualenv环境的库(并且可选地不具有   访问全局安装的库)。

这是一个问题with a similar solution

此外,我使用virtualenvwrapper,因为我发现它可以让管理多个环境变得更加轻松。

答案 1 :(得分:2)

安装python模块的一个好的,标准的,简单的方法是pip

使用此命令安装包含命令的包(在终端中不在python shell中)

pip install <packagename>

(使用root权限)

它负责依赖。

处理python的多个版本:

我不知道这是不是标准做法,但我是这样做的。

要在2.5版本上安装软件包,

python2.5 /usr/bin/pip install <packagename>

Ubuntu默认有多个python版本可用(例如2.4,2.6,2.7,3.2等)

在你的情况下,如果你不想在python2.7上安装numpy(你应该IMO :)) 并且你可以使用python2.5,你可以通过启动python2.5来使用numpy


    $python2.5

    >>> import numpy
    >>>

编辑:

如果您使用apt-get install,该软件包将安装在系统默认的python版本上。

答案 2 :(得分:1)

Apt / dpkg有一种Debian方式来管理多个已安装的Python版本(我相信它被称为python-support)。您安装的任何额外软件包(如numpy)将自动构建,并可用于该软件包支持并由dpkg安装的所有Python版本。由于numpy支持每个Python,你的信息告诉我你系统上唯一的Debian python包是2.5,而你的PATH中的2.7可能是/ usr / local。当您安装numpy软件包时,它不知道本地构建的2.7。你总是可以easy_install。

使用virtualenv的建议是一个很好的建议。我有一个生产系统,我支持使用python 2.5,已从debian unstable中删除; virtualenv可以使用您需要的任何版本。很多工具都需要SInce python,不管Debian想要什么,最好还是留下系统python。

答案 3 :(得分:0)

Debian允许安装多个Pythons(python2.5python2.6包)。包python-numpy中的numpy这样的Python库可以支持其中的多个,但是通过包管理器安装的特定库不一定支持所有这些库。您可以使用apt-cache show python-numpy | grep Python-Version查看支持的版本。如果不支持2.7,则必须从源或(例如)pip,easy_install等安装。

但是,您可能拥有Python 2.7的本地安装(从repos之外的源代码编译和安装)。你的发行版听起来有点过时了(在Linux Mint 12上,numpy只支持2.6和2.7),所以可能没有Python 2.7的官方软件包。如果您执行which python并且它位于/usr/local/usr/bin以外的任何位置,那么您将获得本地安装,您需要使用source或easy_install和朋友安装该软件包。 / p>

那就是说,我的意见是,如果您只需要这些库进行开发,您应该将它们保存在主目录中的沙箱(如virtualenv)中。这样你就可以更好地控制你拥有的确切版本。