【问题标题】:Force pipenv to create a new virtualenv强制 pipenv 创建一个新的 virtualenv
【发布时间】:2018-07-18 16:47:49
【问题描述】:

我通过下载virtualenv 来安装pip,并创建一个引导虚拟环境,如this answer 中所述。

现在我想试试pipenv,所以我用我的引导virtualenv 创建了一个新的virtualenv,然后运行pip install pipenv。现在我可以使用pipenv,但它发现它已经在 virtualenv 中运行并且没有创建新的。

我怎样才能让pipenv 创建一个新的 virtualenv,以便我可以为每个项目拥有单独的 virtualenv?我试过pipenv install -h,但没有一个选项看起来很有希望。

【问题讨论】:

  • 要分离环境,你只需要在其他项目的目录下运行pipenv。请务必先停用您当前的 virtualenv。
  • 澄清一下,@Sraw, pipenv 仅安装在 virtualenv 中。我不想将它安装在我的系统 Python 中。我无法停用我当前的 virtualenv,因为那是安装 pipenv 的地方。

标签: python pip virtualenv pipenv


【解决方案1】:

current documentation 听起来像是您可以设置环境变量 PIPENV_IGNORE_VIRTUALENVS 以避免重复使用已激活的 virtualenv:

source ~/some/virtualenv/location/bin/activate
PIPENV_IGNORE_VIRTUALENVS=1 pipenv install

我不得不承认我还没有尝试过。

【讨论】:

    【解决方案2】:

    如果你在一个新的项目目录中,这些命令会使用 pipenv 创建一个新的 virtualenv:

    使用 python 2 创建一个新的 virtualenv:

    pipenv --two
    

    使用 python 3 创建一个新的 virtualenv:

    pipenv --three
    

    使用任意 python 版本创建一个新的 virtualenv:

    pipenv --python 3.6.4
    

    【讨论】:

    • 这对我不起作用。我认为这是因为我在 virtualenv 中安装了pipenv。它说它正在重用该 virtualenv 而不是创建一个新的。我的问题是我是否可以告诉它创建一个新的。
    • 我明白你在说什么。如果您想将 pipenv 的安装与系统依赖项分开,但使用它来创建新的 virtualenvs,您可以尝试使用文档中的精美安装方法。 docs.pipenv.org/install/#fancy-installation-of-pipenv。建议是使用 pipsi 安装 pipenv,这会将其放入一个隔离的 virtualenv 中,但使其可作为全局命令使用。
    • 您可以使用的另一个选项是 pipenv install <package> --system,它会告诉 pipenv 使用 current 虚拟环境(仍然没有创建单独的虚拟环境),但这可能需要安装 pipenv进入您创建的每个新项目 virtualenv。但是,它可以让您为每个项目保留单独的虚拟环境。也许您愿意做出权衡。
    【解决方案3】:

    看起来 pipenv 对这种情况变得更聪明了。这对我有用。首先,我在 virtualenv 的installation documentation 之后安装了一个引导环境,以便从源代码本地使用它。这样我就不用碰系统Python了,就可以在bootstrap环境安装pipenv了:

    $ curl --location --output virtualenv.tar.gz https://github.com/pypa/virtualenv/tarball/16.1.0
    $ tar -xzf virtualenv.tar.gz
    $ python pypa-virtualenv-4ad2742/src/virtualenv.py vbootstrap
    $ rm -r virtualenv.tar.gz pypa-virtualenv-4ad2742/
    $ vbootstrap/bin/pip install pipenv
    

    然后我新建了一个项目文件夹,并使用 pipenv 安装 numpy:

    $ mkdir my_project
    $ cd my_project
    $ ../vbootstrap/bin/pipenv install numpy
    Creating a virtualenv for this project...
    Pipfile: /home/vagrant/my_project/Pipfile
    Using /home/vagrant/vbootstrap/bin/python (2.7.15rc1) to create virtualenv...
    ✔ Complete 
    Already using interpreter /home/vagrant/vbootstrap/bin/python
    Using real prefix '/usr'
    New python executable in /home/vagrant/.local/share/virtualenvs/my_project-KmT425B_/bin/python
    Installing setuptools, pip, wheel...
    done.
    Virtualenv location: /home/vagrant/.local/share/virtualenvs/my_project-KmT425B_
    Creating a Pipfile for this project...
    Installing numpy...
    Adding numpy to Pipfile's [packages]...
    ✔ Installation Succeeded 
    Pipfile.lock not found, creating...
    Locking [dev-packages] dependencies...
    Locking [packages] dependencies...
    ✔ Success! 
    Updated Pipfile.lock (57a39c)!
    Installing dependencies from Pipfile.lock (57a39c)...
      ?   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 1/1 — 00:00:00
    To activate this project's virtualenv, run pipenv shell.
    Alternatively, run a command inside the virtualenv with pipenv run.
    

    为了方便使用,我创建了一个符号链接:

    $ ln -s ~/vbootstrap/bin/pipenv ~/pipenv
    $ ~/pipenv shell
    Launching subshell in virtual environment...
    vagrant@vagrant:~/my_project$  . /home/vagrant/.local/share/virtualenvs/my_project-KmT425B_/bin/activate
    (my_project) $
    

    【讨论】:

      猜你喜欢
      • 2019-08-21
      • 1970-01-01
      • 2019-03-03
      • 2018-06-23
      • 1970-01-01
      • 2018-10-14
      • 2013-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多