如何在virtualenv中为pip设置python版本?

时间:2017-10-15 06:52:25

标签: python python-2.7

需要运行一些需要安装仅适用于Python 2.7的软件包的项目(我无法更改软件包)。我用Python 3.5.3运行Ubuntu 17.04。我通过发出下一个命令来创建虚拟环境:

sudo virtualenv --python=/usr/bin/python2.7 env

好像我有我需要的版本:

(env) serv@serv:/var/m$ python -V
Python 2.7.13

但是当我尝试安装软件包(仅适用于Python 2.7)时, DOESN' T 看起来像我的virtualenv正在使用python 2.7更感兴趣的是,它指的是已安装的软件包(我认为virtualenv赢得了任何软件包,除了一些默认为pip)。

安装mysql-python(这通常只在从python 3安装时才会发生错误):

ImportError: No module named 'ConfigParser'

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-fi75i_pl/mysql-python/

当我为Python3安装软件包时 - SQLAlchemy:

Requirement already satisfied: SQLAlchemy in /home/loraserver/.local/lib/python3.5/site-packages

如何从Python 2.7环境运行我的代码?

编辑1:我通过以下方式安装mysql-python:

pip install mysql-python

这给了我权限被拒绝。 当我尝试:

sudo pip install mysql-python

它在python3上安装python时给出了同样的错误。

2 个答案:

答案 0 :(得分:2)

我认为问题在于您使用sudo创建了虚拟环境。

这可能要求您在环境中工作时使用sudo,从而导致您的软件包全局安装。

尝试在不使用sudo的情况下创建新的虚拟环境,然后从那里安装软件包。

运行以下命令进行测试:

virtualenv --python=/usr/bin/python2.7 testenv

source testenv/bin/activate

pip install mysql-python

答案 1 :(得分:0)

执行sudo rm -rf env然后(不使用使用sudo)重新开始:

$ virtualenv venv
$ source venv/bin/activate 

验证which python在项目中是否显示python,以及which pip的类似情况。然后:

$ pip install mysql-python
顺便说一下,有一个很好的程序名为/usr/bin/env,所以通常命名你的目录" venv"而不是" env"。