You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
poetry shell modifies $TERM env variable within tmux #10
I am on the latest stable Poetry version, installed using a recommended method.
I have searched the issues of this repo and believe that this is not a duplicate.
I have consulted the FAQ and blog for any relevant entries or release notes.
If an exception occurs when executing a command, I executed it again in debug mode (-vvv option) and have included the output below.
Issue
Hey, I'm an avid tmux user and love poetry so far, thanks for your work!
The issue I am experiencing is that when I run poetry shell my $TERM env variable is being changed from screen-256color to tmux-256color which breaks my terminal colors. Manually setting it back to screen-256color works fine. I'm running zsh 5.9 as my shell of choice.
EDIT:
I can see that emulate bash -c '. .../.venv/bin/activate' is being run in my shell when I run poetry shell. The command should be POSIX-compatible so I don't see a reason for it to be emulated. Maybe that causes some kind of issues but that's just speculation on my part.
if you know how to fix it, submit a merge request!
(personally I'd like to see poetry shell removed altogether, anyway I wouldn't expect that waiting for someone else to fix such things is likely to be a successful strategy)
I've actually skimmed the code for poetry shell but I didn't look for where the emulate command is being invoked. I'll try to confirm my suspicion later on & if it's true I'll also look more in-depth into the source code.
I also noticed this when I would use ZSH to load the poetry and poetry-env plugins, then when I cd'd to a directory with a Poetry pyproject.toml, it would initialize that env, then when I would launch tmux, and other tmux sessions, every following tmux session would use/source that initial poetry env if I were in a Poetry controlled repository.
I've since removed the poetry-env ZSH plugin, and it works as I historically expected. While a minor inconvenience, it's back to my original workflow, which is not bad. Builds muscle memory.
Activity
[-]poetry shell modifies $TERM env variable within TMUX[/-][+]poetry shell modifies $TERM env variable within tmux[/+]dimbleby commentedon May 2, 2023
Not a
zshuser and no idea what the implications ofemulateare, but you can read all about its introduction at python-poetry/poetry#5795I avoid
poetry shellaltogether, just activate the virtual environment yourself as thoughpoetry shelldid not existowittek commentedon May 2, 2023
Yeah I do the same thing to prevent this issue but I still wanted to report this so it can be fixed eventually if it's not just an issue on my side.
dimbleby commentedon May 2, 2023
if you know how to fix it, submit a merge request!
(personally I'd like to see
poetry shellremoved altogether, anyway I wouldn't expect that waiting for someone else to fix such things is likely to be a successful strategy)owittek commentedon May 2, 2023
I've actually skimmed the code for
poetry shellbut I didn't look for where theemulatecommand is being invoked. I'll try to confirm my suspicion later on & if it's true I'll also look more in-depth into the source code.symplrdudley commentedon Aug 5, 2026
I also noticed this when I would use ZSH to load the poetry and poetry-env plugins, then when I
cd'd to a directory with a Poetry pyproject.toml, it would initialize that env, then when I would launch tmux, and other tmux sessions, every following tmux session would use/source that initial poetry env if I were in a Poetry controlled repository.I've since removed the
poetry-envZSH plugin, and it works as I historically expected. While a minor inconvenience, it's back to my original workflow, which is not bad. Builds muscle memory.