我设置了 Ubuntu 12.04 系统,这样我就可以使用 Python 2.7 或 Python 3.3 创建一个 virtualenv,并运行 IPython Notebook。问题是,我不确切地知道我对我的系统做了什么来使这成为可能。我正在尝试帮助其他人以相同的方式设置他们的系统,但我不确定我缺少哪些软件包。
在我的系统上,我可以运行以下命令让 IPython Notebook 在 virtualenv 中运行:
~$ mkdir test_ipython3.3
~$ cd test_ipython3.3
~/test_ipython3.3$ virtualenv -p python3.3 venv
~/test_ipython3.3$ source venv/bin/activate
(venv)~/test_ipython3.3$ pip install ipython[all]==1.1.0
我可以使用 virtualenv -p python2.7 venv 执行相同的命令集,并且拥有几乎相同的环境,除了它运行 Python 2.7。
我正在尝试在 virtualbox 上设置 12.04 安装,以便我也可以成功运行这些命令,但我一直失败。在 virtualbox 中构建干净的 Ubuntu 12.04 机器后,我执行以下操作:
# Update machine:
sudo apt-get update
sudo apt-get dist-upgrade
# Install Python 3.3:
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get update
sudo apt-get install python3.3
# Install virtualenv
sudo apt-get install python-pip
sudo pip install pip --upgrade
sudo pip install virtualenv
# Install necessary packages:
sudo apt-get install python-dev python3.3-dev libzmq-dev
# Build a venv, using Python 2.7, which works:
~$ mkdir test_ipython2.7
~$ cd test_ipython2.7
~/test_ipython2.7$ virtualenv -p python2.7 venv
~/test_ipython2.7$ source venv/bin/activate
(venv)~/test_ipython2.7$ pip install ipython[all]==1.1.0
(venv)~/test_ipython2.7$ ipython notebook
# Works, opening an ipynb that runs Python 3.3
# Build a venv, using Python 3.3, which fails:
~$ mkdir test_ipython3.3
~$ cd test_ipython3.3
~/test_ipython3.3$ virtualenv -p python3.3 venv
~/test_ipython3.3$ source venv/bin/activate
(venv)~/test_ipython3.3$ pip install ipython[all]==1.1.0
(venv)~/test_ipython3.3$ ipython notebook
# Fails, says that ipython is not installed, despite having reported otherwise
尝试在 3.3 virtualenv 中安装 ipython 后,我收到一条消息,提示 ipython 和一些支持包已成功安装。但是当我尝试运行 ipython 或 ipython notebook 时,我收到一条消息,提示未安装 ipython。观看安装过程并回滚输出,我找不到任何明显的故障。我什至从源代码安装了 zmq,所以我安装了 zmq 4.0.3,ipython 在安装过程中找到了它。
谁能发现我哪里出错了?
请您参考如下方法:
IPython 1.x 在安装 Python 3 时创建后缀为“3”的脚本,以避免与安装 Python 2 的 IPython 发生冲突,因此您需要的命令是:
ipython3 notebook
在当前开发的 IPython(将是 2.0)中,这种行为有所改变,IPython 安装了非后缀和后缀入口点(ipython 和 ipython3在 Python 3 上,ipython 和 ipython2 在 Python 2 上),遵循其他包(例如 nose)建立的模式。
I'm still quite curious about the best way to install ipython when you want access to a 2.7 interpreter sometimes, and a 3.3 interpreter other times.
有两种处理方法:
首先是在您的 PATH 中非常高优先级的地方创建一个 ipython 脚本(我使用 ~/bin), 内容:
#!/usr/bin/env python
import IPython
IPython.start_ipython()
无论如何,这将在您的 PATH 上使用当前的 python,因此当您激活 Python 3 env 时,ipython 将使用它,等等。
第二种是只使用:
python -m IPython
或
python3 -m IPython
这与键入 ipython 相同,但您要明确指定要使用的解释器,因此毫无疑问正在使用什么 Python。
