pipenv:仅适用于已安装的文件夹?

时间:2018-05-06 23:05:34

标签: python virtualenv pipenv

我听说很多关于pipenv的好东西,并试图用它来替换Python的其他虚拟环境工具。

我在使用它时遇到了一些麻烦。也许我试图以一种不适合的方式使用它。 Pipenv似乎只在Pipfile所在的文件夹中工作。

例如,我安装了一个名为“leo”(编辑器)的工具,毫不奇怪我会去许多文件夹并启动“pipenv run leo”,它将开始安装另一个虚拟环境。我发现这是非常有限的。

我真的找不到人们在谷歌上谈论这个限制。也许我做错了?

3 个答案:

答案 0 :(得分:2)

在Pipfile所在的目录中,

pipenv --venv

这将显示虚拟环境所在的路径。复制该路径,例如/Users/yourname/.local/share/virtualenvs/yourproject-8XhejQjj,然后在其他任何文件夹中使用source激活venv,例如:

source /Users/yourname/.local/share/virtualenvs/yourproject-8XhejQjj/bin/activate

Ken Reitz's 2018 PyData talk对此进行了说明。

答案 1 :(得分:2)

您可以运行:(从任何目录)

pew workon my-virtualenv-of-choice
pipenv run leo

据我了解,如果您当前已经在使用pipenv运行虚拟环境,则只能执行诸如使用pipenv运行文本编辑器之类的命令。如果没有,它将在当前目录中创建一个新的虚拟环境,然后在其中运行命令。

对于运行命令,pipenv --help的结果如下:

  

运行生成安装到virtualenv中的命令。

答案 2 :(得分:0)

不是您问题的直接答案,但我也遇到了从另一个目录运行控制台应用程序的问题。我不确定这是否是最好的/“最易移植”的解决方案,但是如果您对使用bash脚本作为中间语言感到满意,则可以:

#!/usr/bin/env bash

CURRENT="$(dirname "$0")"
ROOT_DIR="$CURRENT/.."

(cd $ROOT_DIR && pipenv run python3 app/console.py "$@")

这是我的项目目录结构:

.
├── Pipfile
├── Pipfile.lock
├── app
│   ├── __init__.py
│   └── console.py
└── bin
    └── console

现在您可以在任何地方运行/absolute/path/to/bin/console