В настоящее время я использую kedro, version 0.15.4
с pipenv, version 2018.11.26
.
На данный момент мне нужно сделать следующее, если я хочу использовать Pipenv
(в этом примере я хочу, чтобы этот проект находился в каталоге kedro-pipenv
):
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 thepipenv install kedro
orpipenv shell
commands are executed. - К сожалению, в настоящий момент
Pipenv
не поддерживает пользовательскиеvirtualenv
имена.
- This is needed so that the
pipenv install kedro
- In my example, this generates a
virtualenv
with namekedro-pipenv-AB9IGRnB
which resides in the following location~/.local/share/virtualenvs/kedro-pipenv-AB9IGRnB/
- In my example, this generates a
pipenv shell
kedro info
- all is looking good,
kedro
was successfully installed in thevirualenv
handled byPipenv
- all is looking good,
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:
- I navigate one directory up and provide
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.
- I provide
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.
- This step is needed so that the Python version and the single
cd kedro-pipenv
kedro install
- Использование
kedro build-reqs
для управления требованиями проекта.
Я также знаком с conda
, и мне кажется, что на данный момент это гораздо более чистый способ работы с окружением для Kedro.
Однако в большинстве других своих проектов я использовал pyenv
вместе с Pipenv
для управления средой и зависимостями. Это позволяет мне привязать информацию о среде к конкретным областям проекта, имея Pipfile
в корневом каталоге каждого из моих проектов.
Есть ли у кого-нибудь предложения по улучшению вышеуказанного рабочего процесса?