我是 Linux 新手,刚刚在我的笔记本电脑上安装了 Ubuntu 12.10。我使用Python,Ubuntu上有两个版本的Python,2.7和3.2。我的问题来了。如果我下载一个模块然后安装它,它将安装到哪个版本?我不知道像
sudo apt-get install python-virtualenv
这样的命令会将其安装到哪里,哪个版本。是否有一个默认版本,然后将所有内容安装到其中?
当我想使用
pip
安装某些软件包时,我仍然不知道它会匹配哪个版本,也不知道如何将软件包安装到我想要的版本。我搜索过 google 和 stackoverflow,知道它与 virtualenv
有关。我阅读了 virtualenv
文档,但我仍然不太明白。
Debian Python 政策描述了打包模块应该如何与
dpkg
交互,以便为每个安装的 Python 版本安装、编译附加组件。
IIRC 政策规定
python
表示 python2
,并且您必须显式使用 python3
才能获取 v3。
在实践中,这意味着如果您想使用自己的个人库设置自己的 Python 3 环境,您将需要一个虚拟环境(有点像 vmware box 或 chroot,除了仅用于覆盖系统范围的 Python) .
您可以通过发出以下命令来检查您正在运行哪个Python
which python
[output-path]eg: /opt/local/bin/python
用这个
/opt/local/bin/python --version
如果这是您想要指向的 python 版本,请在 python 脚本的最上面一行使用此路径。并使用
#!/opt/local/bin/python
/usr/bin/
中有两个(或更多)二进制Python解释器。您运行的每个 Python 可执行脚本(manage.py
等)在开头都指定了类似这样的内容
#!/usr/bin/python2.6
那是系统级解释器。他们将图书馆存储在
/usr/local/lib/pythonXX/site-packages
使用 virtualenv,您可以自由地拥有自己的沙盒 Python 环境。每个环境都会有一个类似 Unix 的目录结构,包括
$PATH_TO_ENV/lib/site-packages #library home
$PATH_TO_ENV/bin #binaries home
当您激活 virtualenv,然后运行任何 Python 脚本时,它将使用
$PATH_TO_ENV/bin
中的 Python 可执行文件。如果您可以随时删除 $PATH_TO_ENV/lib/site-packages
并且不用担心系统级别的任何垃圾,所有库都设置为 $PATH_TO_ENV
。
要设置 virtualenvs,我使用的是这样的东西:
sudo easy_install pip;
sudo pip install virtualenv;
sudo pip install virtualenvwrapper;
echo "export WORKON_HOME=~/Envs" >> ~/.bashrc
echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc
. ~/.bashrc;
mkdir -p "$WORKON_HOME"
使用
pip
时,您可以明确指定版本号
例如。
pip install django-debug-toolbar>=0.9.4,<1.0
如果您位于 virtualenv 包中,并且其所有依赖项都将安装在
$PATH_TO_ENV/lib/site-packages