我当前正在将kedro, version 0.15.4
与pipenv, version 2018.11.26
一起使用。
目前,如果要使用Pipenv
,则必须执行以下操作(对于此示例,我希望该项目位于kedro-pipenv
目录中:]
mkdir kedro-pipenv && cd kedro-pipenv
virtualenv
“绑定”到项目目录,这实际上仅表示它的名称基于执行pipenv install kedro
或pipenv shell
命令的目录名称。 Pipenv
不具有支持自定义virtualenv
名称的功能。pipenv install kedro
virtualenv
的kedro-pipenv-AB9IGRnB
,其位于以下位置~/.local/share/virtualenvs/kedro-pipenv-AB9IGRnB/
pipenv shell
kedro info
kedro
已成功安装在virualenv
处理的Pipenv
中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
中执行以下操作:
mv kedro-pipenv kedro-pipenv_tmp
kedro new
kedro-pipenv
作为项目的目录名称。mv kedro-pipenv_tmp/Pipfile* kedro-pipenv && rm -rf kedro-pipenv_tmp
kedro
依赖项。cd kedro-pipenv
kedro install
kedro build-reqs
管理项目需求。我也很熟悉conda
,而且目前看来,这是处理Kedro环境的一种更干净的方法。
但是,对于我的大多数其他项目,我一直将pyenv
与Pipenv
结合使用以进行环境和依赖项管理。这使我可以通过在每个项目的根目录中都有一个Pipfile
来将环境信息绑定到特定的项目空间。
有人对如何改进上述工作流程有任何建议吗?
如果您需要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
那样绑定到任何特定目录。
希望有帮助!