首页 > 解决方案 > 如何将 Kedro 与 Pipenv 一起使用?

问题描述

我目前正在kedro, version 0.15.4使用pipenv, version 2018.11.26.

目前,如果我想使用,我必须执行以下操作Pipenv(对于这个例子,我希望这个项目驻留在kedro-pipenv目录中):

  1. mkdir kedro-pipenv && cd kedro-pipenv
    • 这是必需的,以便virtualenv创建的项目“绑定”到项目目录,这仅意味着它的名称基于执行pipenv install kedroorpipenv shell命令的目录名称。
    • 不幸的是,目前Pipenv没有支持自定义virtualenv名称的功能。
  2. pipenv install kedro
    • 在我的示例中,这会生成一个virtualenv名称,该名称kedro-pipenv-AB9IGRnB位于以下位置~/.local/share/virtualenvs/kedro-pipenv-AB9IGRnB/
  3. pipenv shell
  4. kedro info
    • 一切看起来都很好,kedro已成功安装在由virualenv处理Pipenv
  5. cd .. & kedro new
    • 我向上导航一个目录并提供kedro-pipenv项目的目录名称。鉴于该目录之前已在步骤 1 中创建,这将失败,这是预期的,我收到以下消息:
cookiecutter.exceptions.OutputDirExistsException:
Error: "/Users/xyz/projects/kedro-pipenv" directory already exists
Run with --verbose to see the full exception
Error: Failed to generate project.

为了“解决”这个问题,我在与virtualenv以前相同的同时执行以下操作:

我也很熟悉,conda这似乎是目前 Kedro 处理环境的一种更清洁的方式。

但是,对于我的大多数其他项目,我一直在使用pyenv环境Pipenv和依赖项管理。这允许我通过Pipfile在我的每个项目的根目录中都有一个与特定项目空间相关的环境信息。

有没有人对如何改进上述工作流程有任何建议?

标签: pythonpipenvkedro

解决方案


如果您需要 Pipenv 环境根目录指向 Kedro 项目根目录,那么您的解决方案可能是目前情况下的最佳解决方案。如果您可以使用不同名称的 Pipenv 环境根目录和 Kedro 项目目录,那么您可以执行以下操作:

mkdir kedro-pipenv && cd kedro-pipenv
pipenv install kedro
pipenv run kedro new  # create Kedro project inside 'kedro-pipenv'
cd <project-dir>
pipenv run kedro run  # still works even in nested directory 

正如您已经指出的那样,使用 确实更容易conda,因为它的环境不依赖于任何特定目录,不像pipenv.

希望这会有所帮助!


推荐阅读