我目前正在将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
- 在我的示例中,这会生成一个名为
kedro-pipenv-AB9IGRnB
的virtualenv
,该驻留在以下位置~/.local/share/virtualenvs/kedro-pipenv-AB9IGRnB/
- 在我的示例中,这会生成一个名为
pipenv shell
kedro info
- 一切看起来都很好,
kedro
已成功安装在Pipenv
处理的virualenv
中
- 一切看起来都很好,
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
- 需要此步骤才能维护 Python 版本和单个
kedro
依赖项。
- 需要此步骤才能维护 Python 版本和单个
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
不同,它的环境不绑定到任何特定目录。
希望这有帮助!