pipenv :如何强制 virtualenv 目录?

pipenv : how to force virtualenv directory?

实际上,pipenv 将使用如下路径安装 virtualenv :

$WORKON_HOME/<base_dir>-<hash>

是否有可能完全是我想要的路径,即没有 base_dirhash,例如:

/home/user/myapp_venv

有一个undocumented feature的pipenv,它可以从VIRTUAL_ENV环境变量中找到virtualenv路径,但是你需要手动创建virtualenv:

virtualenv /home/user/myapp_venv
VIRTUAL_ENV=/home/user/myapp_venv pipenv install

除了使用自定义位置外,您还可以在项目目录中安装 virtualenv。只需在 .bashrc/.zshrc 文件中添加以下行:

export PIPENV_VENV_IN_PROJECT=1

只是想让其他人知道还有另一种方法可用。

你应该将 virtualenv 保留在项目目录的内部还是外部是一个自以为是的问题。

pipenv 中有一个未记录的功能:如果您 create a file named .venv in the project root with a path in itpipenv 将使用它而不是自动生成的路径。

然而,is more fit for cases when you already have an established set of environments that you wish to reuse。否则,将环境放置在任意位置最终很容易造成混乱。 pipenv 将您从这项任务中解放出来,专门将它们放在一个可预测的位置,并消除人为错误造成的意外碰撞。

在 windows 中,Pycharm 用户来自

  1. 将 .venv 折叠到项目中

  2. 设置->项目->项目解释器->pipenv环境

对我有用

在项目中创建目录 .venv 然后尝试使用 pipenv install <some package> 启动在我的 mac 中一开始对我不起作用,它总是在其他地方创建虚拟环境。虽然后来我弄清楚了原因。黑客是,首先 cd 到项目文件夹 cd /Home/.../MyProject 然后创建一个空的 Pipfile touch Pipfile 创建一个目录 mkdir .venv 应该工作。现在您可以 运行 pipenv install 并且将使用 .venv 文件夹。

现在详细说明来自来源code。当 pipenv 尝试创建一个虚拟环境时,它会查看目录 dot_venv = os.path.join(self.project_directory, ".venv")(取自源代码),这就是 self.project_directory 的样子:

@property
    def project_directory(self):
        # type: () -> str
        return os.path.abspath(os.path.join(self.pipfile_location, os.pardir))

因此该函数查找 pipfile 位置以创建将创建虚拟环境的路径。因此,如果您事先创建空 Pipfile,则确认它会找到该文件,然后找到 .venv 目录并一起创建路径。