【问题标题】:Python 2.7 and 3.4: Libraries inaccessible across versionsPython 2.7 和 3.4:跨版本无法访问的库
【发布时间】:2015-08-22 15:04:59
【问题描述】:

我是 Python 新手。我运行的是 Ubuntu 14.04,上面有 Python 2.7 和 3.4。

我想使用更新的 3.x 版本,以及 NumPy、SciPy 和 NLTK 库。我在 ~/.bash_aliases 文件中将 Python REPL 路径设置为 Python 3.x,如下所示:

别名 python=python3

之后我安装了几个库,包括 python-numpy、python-scipy 和 python-matplotlib。

$ sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose

不幸的是,我遇到了一些问题,因为我猜测这些库是为旧的 2.7 版本的 Python 安装的;我无法使用 3.4 REPL 访问这些库。

导入 numpy

ImportError: 没有名为“numpy”的模块

但是,我可以使用旧版本访问这些库:

$ /usr/bin/python2.7

我如何获得这项工作?

【问题讨论】:

  • 您需要为每个 python 版本单独安装。 Python 3 现在有不错的支持,所以你可能只是这样做,例如,sudo apt-get install python3-numpy(虽然我还没有测试过)
  • 哦。这是一个约定吗,v.3.x 的较新库将在 python 末尾加上 3 后缀?像这样:python3-numpy python3-scipy python3-matplotlib。对不起,如果这听起来像新手;我是 Python 新手。
  • @sapi,错过了在评论中添加你的名字 :)
  • 当您使用apt-get 时,您正在从您的分发包管理器(即您的Ubuntu)安装库。他们使用python3- 约定。您也可以使用sudo pip3 install numpy 来使用 Python 的包管理器进行安装,但这可能对依赖项有点繁琐。如果你是新手,我会坚持前者。
  • 嘿,谢谢@sapi。非常感谢您的回答。你真的可以让它成为问题的正确答案,以便我可以将其标记为这样吗?谢谢。

标签: python python-2.7 python-3.x compatibility


【解决方案1】:

当您使用apt-get 安装 Python 包时,您依赖的是分发包管理器。 Ubuntu 约定是在 Python 2 包前面加上 python-,在 Python 3 包前面加上 python3-

这种区别是必要的,因为 Python 3 引入了一些与 Python 2 不兼容的更改。因此不可能简单地为 Python 3 重新编译(大多数)包,这意味着两者都需要可用。

或者,您可以使用 Python 包管理器 pip(或 pip3)。问题是某些包(如scipy)需要某些您可能尚未安装的编译器工具链。

对于特定机器,坚持使用apt-getpip 通常是个好主意。如果您混合使用它们可能不会有问题,但最好保持一致。

【讨论】:

    猜你喜欢
    • 2014-09-13
    • 2015-06-15
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-19
    • 1970-01-01
    • 2019-04-06
    相关资源
    最近更新 更多