pyvenv vs venv vs python-virtualenv vs virtualenv和python 3


13
malikarumi@Tetouan2:~$ pip install virtualenv
    Collecting virtualenv
    Downloading virtualenv-12.0.7-py2.py3-none-any.whl (1.8MB)
    100% |################################| 1.8MB 330kB/s 

malikarumi@Tetouan2:~$ pip freeze
    (a lot of stuff, but not virtualenv)

malikarumi@Tetouan2:~$ virtualenv testvenv1
    The program 'virtualenv' is currently not installed. You can install it by typing:
    sudo apt-get install python-virtualenv

这里发生了什么?是python-virtualenv == pyvenv吗?还不是很坏吗?原始的virtualenv仍然可以与python一起使用吗?如果venv(名称变体太多!!)是标准库https://docs.python.org/3/library/venv.html的一部分,为什么要告诉我安装它?

当我确实尝试安装它时,我得到了:

malikarumi@Tetouan2:~$ sudo apt-get install python-virtualenv
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    The following extra packages will be installed:
    python-colorama python-distlib python-html5lib python-pip python-setuptools

那时我中止了,因为在那之前安装了python3-pip给了我

Setting up python3-setuptools (3.3-1ubuntu1) ...
Setting up python3-pip (1.5.4-1) ...

而且我不确定额外的软件包是否会覆盖它们或使用python 2.7。

我读到python 3应该是默认的。由于2.7和3.4都存在,并且有单独的命令,我不仅要确保Python 3是我的默认设置,而且要确保我安装的所有内容都在那里并被2.7代替,而不是它?

顺便说一句,我尝试sudo apt-get python3-virtualenv并得到:E:无法找到包python3-virtualenv


1
我仍然想知道所有这些不同但名称相似的虚拟环境程序包之间的区别(如果有)。
Malik A. Rumi 2015年

我正在使用14.04,因此此答案对我有所帮助。
FriendFX '02

Answers:


4

在Python虚拟环境中安装Python 3.x软件包的方法是使用Python 3虚拟环境创建器(python3-virtualenv)创建Python虚拟环境。python3-virtualenv在Ubuntu 14.10及更高版本中的默认Ubuntu存储库中。

在16.04及更高版本的Python虚拟环境中安装Python 3.x软件包

  1. 安装Python 3虚拟环境创建者

    sudo apt install virtualenv python3-virtualenv
  2. 为python3创建一个Python虚拟环境。您只能在此Python虚拟环境中安装python3软件包。如果您还想安装Python 2.x软件包,则需要制作另一个Python虚拟环境。

    virtualenv -p python3 env  
    source ./env/bin/activate

    python3的新Python虚拟环境将env在当前目录中的目录中创建。

  3. 安装Python软件包。

    cd / path / to / env /#env是python3虚拟环境的目录
    源bin /激活
    pip3安装第一个软件包名称下一个软件包名称最后一个软件包名称

这是具有最新版本pip3的新python3虚拟环境,因此在其中安装Python软件包将非常有用。


在Ubuntu 14.04中的Python虚拟环境中安装Python 3.x软件包

sudo apt-get install virtualenvwrapper  
gedit .bashrc

将以下行添加到.bashrc的末尾。

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

将更改保存到.bashrc并关闭gedit。采购您的.bashrc,以使更改生效。

cd 
source .bashrc

为python3创建一个Python虚拟环境。您只能在此Python虚拟环境中安装python3软件包。如果您还想安装Python 2.x软件包,则需要制作另一个Python虚拟环境。

mkvirtualenv py3 -p /usr/bin/python3

将在~/.virtualenvs/py3目录中创建python3的新Python虚拟环境。.virtualenvs是一个隐藏的文件夹。

安装软件包。

光盘〜/ .virtualenvs / py3
源bin /激活
pip3安装软件包名称

4
这似乎是不正确的。鲜艳(15.04)具有python3-virtualenvpython3-venv可用的软件包。我假设python3-venv是正确的包装,在这种情况下,我不知道有什么目的python3-virtualenv
knite

不正确 您可以使用virtualenv(可执行)创建带有任意解释器的环境,包括PyPy,例如Eg virtualenv -p python3 newenv
saaj

0

好吧,它变得复杂。针对Ubuntu Xenial(我使用的Linux Mint的基础版本)显示了以下内容。让我们解决一下:

pyvenv

它指的是Python 3.3+ stdlib软件包的包装器脚本。但是从Python 3.6开始不推荐使用。

它也是一个PyPi软件包,它是一个虚拟环境切换器。

静脉

这是Python 3.3+ stdlib软件包,其目的是改进和替换PyPi virtualenv软件包(请参阅PEP 405)。但是似乎还不存在(至少还没有完成功能)。

python-virtualenv和virtualenv

$ apt-cache show virtualenv | grep Depends
Depends: python3, python3-virtualenv

如您所见,它在Python 3上运行。package的python-virtualenv使用方式类似于python2 -m virtualenv py2。让我们看看如何virtualenv在全新的Ubuntu Xenial(docker run --rm -it ubuntu:xenial)上工作:

$ virtualenv
bash: virtualenv: command not found
$ apt-get update
...
$ apt-get install --yes --no-install-recommends virtualenv
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  ca-certificates dh-python libexpat1 libmpdec2 libpython3-stdlib
  libpython3.5-minimal libpython3.5-stdlib libsqlite3-0 libssl1.0.0
  mime-support openssl python-pip-whl python3 python3-minimal
  python3-pkg-resources python3-virtualenv python3.5 python3.5-minimal
Suggested packages:
  libdpkg-perl python3-doc python3-tk python3-venv python3-setuptools
  python3.5-venv python3.5-doc binutils binfmt-support
Recommended packages:
  file
The following NEW packages will be installed:
  ca-certificates dh-python libexpat1 libmpdec2 libpython3-stdlib
  libpython3.5-minimal libpython3.5-stdlib libsqlite3-0 libssl1.0.0
  mime-support openssl python-pip-whl python3 python3-minimal
  python3-pkg-resources python3-virtualenv python3.5 python3.5-minimal
  virtualenv
...
$ virtualenv test
The executable python2 (from --python=python2) does not exist
$ virtualenv -p python3 py3 
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /py3/bin/python3
Also creating executable in /py3/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
$ . py3/bin/activate
(py3) $ python --version
Python 3.5.2
(py3) $ deactivate
$ apt-get install --yes --no-install-recommends python    
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libffi6 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib
  python-minimal python2.7 python2.7-minimal
Suggested packages:
  python-doc python-tk python2.7-doc binutils binfmt-support
The following NEW packages will be installed:
  libffi6 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python
  python-minimal python2.7 python2.7-minimal
...
$ virtualenv py2 
Running virtualenv with interpreter /usr/bin/python2
New python executable in /py2/bin/python2
Also creating executable in /py2/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
$ . py2/bin/activate
(py2) $ python --version
Python 2.7.12

如您所见,即使virtualenvpackage正在使用python3-virtualenv,它的默认值是创建Python 2环境。


我还注意到当时运行Ubuntu 14.04的计算机上发生了同样的事情。- “如您所见,即使virtualenv软件包使用的是python3-virtualenv,它的默认值是创建Python 2环境。
karel
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.