17

我想在纯粹通过 python3.3 解释的虚拟环境中玩耍。在我的系统(Ubuntu 13.04)上,有两种方法可以创建虚拟环境。

virtualenv env

或者:

pyvenv-3.3 env

如果我使用老忠实,virtualenv我可以按预期使用所有内容,但是,PIP 将所有内容安装到 python2.7 库而不是 python3.3 库中。因此,使用调用脚本

python3 script.py 

似乎还没有工作:

python script.py 

奇迹般有效。但是,显然必须使用python2.7


现在,如果相反,我使用 Python3+ ( ) 中的“内置” venv pyvenv-3.3,似乎一切都变得有点古怪。它在 venv 中正确放置了一个 python3.3 lib 文件夹,但是,使用 PIP 安装模块不再可能,因为它似乎以某种方式引用了全局而不是虚拟环境。

所以,关于我的问题:

您如何建议获得一个仅将 Python3.3(+) 和 PIP 安装到 python3.3 库的工作虚拟环境?

4

7 回答 7

51

您可能会考虑尝试类似于以下内容:

  1. 创建您的虚拟环境

    $ python3 -m venv myvenv
    $ source myvenv/bin/activate
    (myvenv)$
    
  2. 按照官方pip安装说明安装pip 。 从 pip v1.5.1 开始,您不再需要在安装 pip 之前手动安装 setuptools。

    (myvenv)$ curl https://bootstrap.pypa.io/get-pip.py | python
    
  3. 停用然后重新激活您的虚拟环境。 这样做,否则 pip 将无法正常工作。

    (myvenv)$ deactivate
    $ source myvenv/bin/activate
    (myvenv)$ which pip
    

更长的响应:

是的,我遇到了类似的问题。它与您系统上的所有其他 python 和 pip 以及未安装的 pip 有关,就像您习惯的非“核心” virtualenv 一样。

由于某种原因,venv 模块没有安装 setuptools 和 pip。

我做了以上,到目前为止,一切都很好。

Python 3.3中的 venv不会自行安装 pip:

常见的安装工具(例如 Distribute 和 pip)可以按预期与 venv 一起工作 - 即,当 venv 处于活动状态时,它们会将 Python 包安装到 venv 中,而无需明确告知这样做。当然,您需要先将它们安装到 venv 中。

venv的Python 3.4实现默认安装 pip。

在 3.4 版更改: 默认安装 pip

http://docs.python.org/3/library/venv.html

which pip您可以使用和检查您的点子pip -V。如果您没有停用/激活 venv 并且pip -V不会显示正确的 pip,但which pip仍可能显示正确的路径。

于 2013-11-07T23:24:15.313 回答
7

这是我的做法(我在 Ubuntu 12.04 上)。

首先,将 Python 3.3 安装在一个文件夹中,例如/opt/python3. 然后运行以下命令:

/opt/python3/bin/pyvenv-3.3 ~/py3  # pyvenv is python3's built-in virtualenv
source ~/py3/bin/activate
curl https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py | python
easy_install-3.3 pip 
于 2014-01-15T01:27:52.113 回答
5

最新版本的pip功能pip3将安装到您的默认 Python3 实例中。

pip3 install python_lib

如果您的系统上同时安装了 Python 2.x 和 3.y,pip将安装到您的 Python 2.x 和pip3Python 3.y 中。

于 2015-07-05T04:40:55.340 回答
2

这对我有用:

> virtualenv-3.3 env
...
> source env/bin/activate
> pip install simple-date
...
> python
Python 3.3.0 (default, Mar 27 2013, 20:56:52) 
[GCC 4.7.2 20130108 [gcc-4_7-branch revision 195012]] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import simpledate
>>>

不幸的是,我不完全确定我以前是如何安装 virtualenv-3.3 的。我我可能做了类似的事情:

> wget http://python-distribute.org/distribute_setup.py
> python3.3 distribute_setup.py
> easy_install-3.3 virtualenv

[编辑:是的,我在http://www.acooke.org/cute/GettingPyt0.html的笔记似乎证实了这一点]

请注意,这是一个 python-3.3 特定的 virtualenv。

如评论中所述,我无法让 pyvenv-3.3 工作。

于 2013-08-10T04:29:59.770 回答
1

我在 OS X 上遇到了同样的问题。看起来即使pip是被放入的可执行文件bin/仍然easy_install适用于 Python 2。如果您使用pip3可执行文件(或其变体),它应该可以正常工作!

于 2014-01-16T23:20:40.230 回答
1

我已使用PPA ppa:fkrull/deadsnakes在我的 Elementary Os(基于 Ubuntu 的 Linux 发行版)中安装 Python 3.4。

我想指出一个迹象。在 Python 3.4 Ubuntu 包中**当您创建一个虚拟环境(使用pyvenv-3.4)时,pip 安装在local/bin而不是bin下。

所以要使用它,你必须在第 44 行修改bin/activate脚本。它应该是

PATH="$VIRTUAL_ENV/bin:$VIRTUAL_ENV/local/bin:$PATH"
于 2014-07-01T09:49:00.243 回答
0

文档中很好地提到了这一点:

常见的安装工具(例如 Distribute 和 pip)可以按预期与 venv 一起工作 - 即,当 venv 处于活动状态时,它们会将 Python 包安装到 venv 中,而无需明确告知这样做。**当然,您需要先将它们安装到 venv 中:这可以通过在 venv 激活的情况下运行 deploy_setup.py 来完成,然后运行 ​​easy_install pip**。或者,您可以下载源 tarball 并在解压后运行 python setup.py install,并激活 venv。

于 2014-03-10T05:56:16.370 回答