Как использовать Кедро с Pipenv?

В настоящее время я использую kedro, version 0.15.4 с pipenv, version 2018.11.26.

На данный момент мне нужно сделать следующее, если я хочу использовать Pipenv (в этом примере я хочу, чтобы этот проект находился в каталоге kedro-pipenv):

  1. mkdir kedro-pipenv && cd kedro-pipenv
    • This is needed so that the virtualenv created is "tied" to the project directory which only really means that it has a name that is based on the directory name from which the pipenv install kedro or pipenv shell commands are executed.
    • К сожалению, в настоящий момент Pipenv не поддерживает пользовательские virtualenv имена.
  2. pipenv install kedro
    • In my example, this generates a virtualenv with name kedro-pipenv-AB9IGRnB which resides in the following location ~/.local/share/virtualenvs/kedro-pipenv-AB9IGRnB/
  3. pipenv shell
  4. kedro info
    • all is looking good, kedro was successfully installed in the virualenv handled by Pipenv
  5. cd .. & kedro new
    • I navigate one directory up and provide kedro-pipenv as the directory name for the project. Given that the directory was already created before in step 1, this fails which is expected and I get the following message:
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
    • rename the existing directory
  • kedro new
    • I provide kedro-pipenv as the directory name for the project.
  • mv kedro-pipenv_tmp/Pipfile* kedro-pipenv && rm -rf kedro-pipenv_tmp
    • This step is needed so that the Python version and the single kedro dependency is maintained.
  • cd kedro-pipenv
  • kedro install
  • Использование kedro build-reqs для управления требованиями проекта.

Я также знаком с conda, и мне кажется, что на данный момент это гораздо более чистый способ работы с окружением для Kedro.

Однако в большинстве других своих проектов я использовал pyenv вместе с Pipenv для управления средой и зависимостями. Это позволяет мне привязать информацию о среде к конкретным областям проекта, имея Pipfile в корневом каталоге каждого из моих проектов.

Есть ли у кого-нибудь предложения по улучшению вышеуказанного рабочего процесса?


person jayBana    schedule 25.11.2019    source источник


Ответы (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.

Надеюсь, это поможет!

person Lorena Balan    schedule 03.12.2019