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

问题描述 投票:3回答:4

Pipenv似乎只在Pipfile所在的目录中工作。也许我试图以一种不适合的方式使用它。

例如,我安装了一个名为“leo”(编辑器)的工具,毫不奇怪,我会去许多文件夹并启动pipenv run Leo,它将开始安装另一个虚拟环境。解决方法是什么?

python virtualenv pipenv
4个回答
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涵盖。


2
投票

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

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

据我所知,如果你当前已经在运行带有pipenv的虚拟环境,你只能执行像pipenv运行文本编辑器这样的命令。如果没有,它将在当前目录中创建一个新的虚拟环境,然后在其中运行该命令。

pipenv --help的结果说,对于run命令:

运行Spawns安装到virtualenv中的命令。


1
投票

google真的很难,但我发现了最好的解决方案。

要使用pipenv轻松激活任何地方的虚拟环境,您可以使用pew。

一旦你安装pew,你就可以轻松地做“pew workon myvenv”。

Pew在引擎盖下使用pipenv,它也适用于Windows。


1
投票

是的,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脚本来安装它。)


1
投票

不是你问题的直接答案,但我也遇到了从另一个目录运行控制台应用程序的问题。我不确定这是否是最好/“最便携”的解决方案,但是如果你对使用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了。

© www.soinside.com 2019 - 2024. All rights reserved.