如何在Pipenv中使用Kedro?

时间:2019-11-25 17:28:55

标签: python pipenv kedro

我当前将kedro, version 0.15.4pipenv, version 2018.11.26一起使用。

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

  1. mkdir kedro-pipenv && cd kedro-pipenv
    • 需要这样做是为了使创建的virtualenv被“绑定”到项目目录,这实际上仅意味着它的名称基于pipenv install kedro或{{ 1}}命令被执行。
    • 不幸的是,目前pipenv shell不具有支持自定义Pipenv名称的功能。
  2. virtualenv
    • 在我的示例中,这将生成一个名称为pipenv install kedro的{​​{1}},它位于以下位置virtualenv
  3. kedro-pipenv-AB9IGRnB
  4. ~/.local/share/virtualenvs/kedro-pipenv-AB9IGRnB/
    • 一切都很好,pipenv shell已成功安装在kedro info处理的kedro
  5. virualenv
    • 我向上浏览一个目录,并提供Pipenv作为项目的目录名称。鉴于该目录已经在步骤1之前创建,这会失败,这是预期的,并且我收到以下消息:
cd .. & kedro new

为了“解决”此问题,我在仍然与以前相同的kedro-pipenv中进行以下操作:

  • 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
    • 我提供mv kedro-pipenv kedro-pipenv_tmp作为项目的目录名称。
  • kedro new
    • 需要执行此步骤,以便维护Python版本和单个kedro-pipenv依赖性。
  • mv kedro-pipenv_tmp/Pipfile* kedro-pipenv && rm -rf kedro-pipenv_tmp
  • kedro
  • 使用cd kedro-pipenv管理项目需求。

我对kedro install也很熟悉,而且目前看来,这是处理Kedro环境的一种更为简洁的方法。

但是,对于我的其他大多数项目,我一直将kedro build-reqsconda结合使用来进行环境和依赖性管理。这样,通过在每个项目的根目录中都有一个pyenv,可以将环境信息绑定到特定的项目空间。

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

1 个答案:

答案 0 :(得分:1)

如果您需要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那样绑定到任何特定目录。

希望这会有所帮助!