我对 Linux 还很陌生,因此接下来的内容可能会有一些明显的失误。
我昨天刚刚安装了最新的 Ubuntu LTS 版本,以及 pyCharm(Python 编辑器)。我按照他们网站上的命令继续更新 scipy-stack:
sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
但是,现在在 pyCharm 中,我发现 scipy 没有更新。结果发现有多个可用的 python 安装:
$ sudo ls /usr/bin/python*
/usr/bin/python /usr/bin/python2-config /usr/bin/python3m
/usr/bin/python2 /usr/bin/python3 /usr/bin/python-config
/usr/bin/python2.7 /usr/bin/python3.4 /usr/bin/pythontex
/usr/bin/python2.7-config /usr/bin/python3.4m /usr/bin/pythontex3
$ which python
/usr/bin/python
我想使用 python2.7 作为我的主要/标准 python 参考,并更新其软件包。我该如何实现?
答案1
实际上默认只有两个 Python 安装。这里是 2.7 和 3.4。所有软件包python-*
都是为 Python 2.7 构建的。所有python3-*
软件包都是为 Python 3.4 构建的。
你所注意到的版本与scipy
这些 Python 安装的总体布局无关,这是关于 Ubuntu 如何工作的。Ubuntu 不会为其开发人员发布的每个更新更新所有软件包。它仅在发布安全版本或使其显著改进时才更新软件包。这为不希望在其部署的系统上发生 API/ABI 更改的开发人员提供了稳定性。
我怀疑你其实根本不想使用 Ubuntu 的 Python 系统,而是想使用virtualenv
。它们使用系统的python
(或python3
)二进制文件,但你可以拥有其余的环境(site-packages
等)。这让你几乎可以完全灵活地从 中安装任何版本pip
,而无需 root 权限,也不会破坏系统管理的文件。
通常这是一个创建一个virtualenv
、“激活”它然后安装你的包的情况:
virtualenv /path/to/venv # or python3 -mvenv /path/to/venv
source /path/to/venv/bin/activate
pip install -U pip # update pip
pip install -U numpy scipy matplotlib ipython ipython-notebook pandas sympy nose
注意,上面这些包的名称可能不正确,pip
会告诉你。
还要注意,您可能会遇到一些有关缺少构建依赖项的错误。您从 Ubuntu 下载的需要编译的软件包(大多数这些计算软件包)都已预编译。您需要满足它们的依赖关系。一种不雅的做法是使用apt-get build-dep
Ubuntu 版本。如果 Ubuntu 和 PyPi 版本之间的依赖关系有偏差,您可能需要安装其他东西。请参阅该项目的文档以了解您需要什么。
sudo apt-get build-dep python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
遗憾的是,这将为 Python 2 和 3 安装 build-deps,但它只是磁盘空间,对吗?:) 如果您愿意,您可以手动满足依赖关系。