pyenv, poetry are wrappers and do different things.
You would use pyenv to create a virtual environment. Or venv directly. Or the older virtualenv tool. Stick to pyenv as it is easiest.
You can setup your shell to activate/deactivate automagically for you when you cd into your project directory using something like: https://github.com/direnv/direnv
I would avoid poetry.
Edit: bah, somebody answered already
tl;dr - Setup direnv and pyenv once and foggetaboutit.
Surprisingly, it seems like the answer today is no. But there's a little bash snippet that wraps cd to give us a start [2]. But just dropping `poetry shell` in an `.envrc` for direnv is better than nothing too.
Then, when you `cd` into your project directory, your environment with all its dependencies appears.
However, there are some downsides to this magical future tech:
+ Nix is hard to learn.
+ Not compatible with the standard environment managers for each language.