我听说很多关于pipenv的好东西,并试图用它来替换Python的其他虚拟环境工具。
我在使用它时遇到了一些麻烦。也许我试图以一种不适合的方式使用它。 Pipenv似乎只在Pipfile所在的文件夹中工作。
例如,我安装了一个名为“leo”(编辑器)的工具,毫不奇怪我会去许多文件夹并启动“pipenv run leo”,它将开始安装另一个虚拟环境。我发现这是非常有限的。
我真的找不到人们在谷歌上谈论这个限制。也许我做错了?
答案 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
。