Python pipenv:仅在已安装的文件夹中工作?

Python pipenv:仅在已安装的文件夹中工作?,python,virtualenv,pipenv,Python,Virtualenv,Pipenv,Pipenv似乎只在PIP文件所在的目录中工作。也许我正试图用一种它不是为之设计的方式来使用它 例如,我安装了一个名为“leo”(一个编辑器)的工具,毫不奇怪,我将进入许多文件夹并启动pipenv run leo,它将开始安装另一个虚拟环境。解决方法是什么?用谷歌搜索这个确实很困难,但我找到了最好的解决方案 要使用pipenv轻松激活任何位置的虚拟环境,您可以使用pew 一旦您安装了pew,您就可以轻松地在myvenv上进行“pew训练” Pew在引擎盖下使用pipenv,它也在Windows上

Pipenv似乎只在PIP文件所在的目录中工作。也许我正试图用一种它不是为之设计的方式来使用它


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

用谷歌搜索这个确实很困难,但我找到了最好的解决方案

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

一旦您安装了pew,您就可以轻松地在myvenv上进行“pew训练”


Pew在引擎盖下使用pipenv,它也在Windows上工作。

是的,pipenv仅在PIP文件所在的目录(或其子目录)中工作

如果您想将Python程序安装到他们自己的虚拟环境中,同时仍然能够在任何地方使用它们,那么您可以使用–安装后,您只需执行
pipsiinstall
即可将Python包安装到自己的VirtualEnvironment中


(如果你觉得很勇敢,有一些修复和改进还没有进入主存储库。你可以通过传递
--src git来安装它+https://github.com/anowlcalledjosh/pipsi@开发#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

在Pipfile所在的目录下,执行以下操作

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

source/Users/yourname/.local/share/virtualenvs/yourproject-8XhejQjj/bin/activate
这包括在。

您可以从任何目录运行:

#使用pip(非pipenv)安装皮尤
$pip安装皮尤
...
#获取venv名称
$(cd&pipenv--venv)
/python-1234ABCD
#激活静脉
$pew workon python-1234ABCD
#像往常一样运行pipenv
$pipenv运行leo
据我所知,如果您当前已经在使用pipenv运行虚拟环境,则只能执行诸如使用pipenv运行文本编辑器之类的命令。如果没有,它将在当前目录中创建一个新的虚拟环境,然后在其中运行该命令

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

run生成安装到virtualenv中的命令


只需在项目目录中使用带有PIP文件的
pipenv shell
,您就可以自由移动。
virtualenv
并不是那么笨拙,您需要第二个工具来包装它。@BallpointBen当问题是关于使用工具时,我不认为“不要使用那个工具”是一个有用的回答。我建议使用不同的工具库。。。pipenv shell有点做这项工作。。。只有一点点痛。。。我需要转到文件夹来制作“pipenv shell”,对吗?从技术上讲,pipenv在引擎盖下使用Pew是另一种方式,因此它的VirtualNV与Pew兼容:)