Pipenv似乎只在Pipfile所在的目录中工作。也许我试图以一种不适合的方式使用它。
例如,我安装了一个名为“leo”(编辑器)的工具,毫不奇怪,我会去许多文件夹并启动pipenv run Leo
,它将开始安装另一个虚拟环境。解决方法是什么?
在Pipfile所在的目录下,执行
pipenv --venv
这将显示虚拟环境所在的路径。复制该路径,例如/Users/yourname/.local/share/virtualenvs/yourproject-8XhejQjj
,以及在任何其他文件夹中,您可以使用source
激活venv,例如:
source /Users/yourname/.local/share/virtualenvs/yourproject-8XhejQjj/bin/activate
你可以运行:(从任何目录)
pew workon my-virtualenv-of-choice
pipenv run leo
据我所知,如果你当前已经在运行带有pipenv的虚拟环境,你只能执行像pipenv运行文本编辑器这样的命令。如果没有,它将在当前目录中创建一个新的虚拟环境,然后在其中运行该命令。
pipenv --help
的结果说,对于run命令:
运行Spawns安装到virtualenv中的命令。
google真的很难,但我发现了最好的解决方案。
要使用pipenv轻松激活任何地方的虚拟环境,您可以使用pew。
一旦你安装pew,你就可以轻松地做“pew workon myvenv”。
Pew在引擎盖下使用pipenv,它也适用于Windows。
是的,Pipenv只能在Pipfile所在的目录(或其子目录)中运行。
如果你想要一种方法将Python程序安装到他们自己的虚拟环境中,同时仍然能够在任何地方使用它们,你可以使用pipsi - 一旦安装完毕,你可以只使用pipsi install <package>
将Python软件包安装到自己的virtualenv中。
(如果你有勇气,my fork of pipsi有一些修复和改进尚未进入主存储库。你可以通过将--src git+https://github.com/anowlcalledjosh/pipsi@develop#egg=pipsi
传递给get-pipsi.py
脚本来安装它。)
不是你问题的直接答案,但我也遇到了从另一个目录运行控制台应用程序的问题。我不确定这是否是最好/“最便携”的解决方案,但是如果你对使用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
了。