Poetry Shell: How to shorten bash prefix
Asked Answered
R

5

6

When activating a poetry python shell, I get a very long string in my bash prompt:

(my-current-folder-pNzYm0GW-py3.8) (base) myusername@mycomputername>

I'd like to have it much shorter, maybe like this:

(py3.8) myusername@mycomputername>

Does anyone know how to do that?

(I guess the base comes from miniconda being also installed on the system, which I can probably fix by editing my .bashrc)

Riding answered 14/8, 2020 at 9:58 Comment(0)
T
3

You can change the value of your interactive prompt :

export PS1="[\u@\h:\w ] $ "

Where:

\a : an ASCII bell character (07)
\d : the date in “Weekday Month Date” format (e.g., “Tue May 26”)
\D{format} : the format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specific time representation. The braces are required
\e : an ASCII escape character (033)
\h : the hostname up to the first ‘.’
\H : the hostname
\j : the number of jobs currently managed by the shell
\l : the basename of the shell’s terminal device name
\n : newline
\r : carriage return
\s : the name of the shell, the basename of $0 (the portion following the final slash)
\t : the current time in 24-hour HH:MM:SS format
\T : the current time in 12-hour HH:MM:SS format
\@ : the current time in 12-hour am/pm format
\A : the current time in 24-hour HH:MM format
\u : the username of the current user
\v : the version of bash (e.g., 2.00)
\V : the release of bash, version + patch level (e.g., 2.00.0)
\w : the current working directory, with $HOME abbreviated with a tilde
\W : the basename of the current working directory, with $HOME abbreviated with a tilde
\! : the history number of this command

Afterwards just add it to your ~/.bashrc

Timothea answered 15/8, 2020 at 21:25 Comment(0)
W
4

Poetry uses virtualenv. This means, if you change the prompt prefix of the virtualenv, you change the poetry prefix.

1) Find the path of your virtualenv:

# in the directory where you use poetry
$ poetry env info
Virtualenv
Python:         3.10.4
Implementation: CPython
Path:           /Users/myuser/Library/Caches/pypoetry/virtualenvs/my-env-SQabEQie-py3.10
Valid:          True

2) Change the prompt prefix of the virtualenv

(These instructions are directly taken from here)

# cd to the path of the virtualenv
$ cd /Users/myuser/Library/Caches/pypoetry/virtualenvs/my-env-SQabEQie-py3.10
# open the file bin/activate in an editor
$ nano bin/activate

Modify the following lines to change the prefix:

...
else
    PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1"
fi
...

For example, if you want to have a static prefix '(ptr)' change it to

...
else
    PS1="(ptr) ${PS1-}"
fi
...
Wilonah answered 24/6, 2022 at 7:16 Comment(0)
T
3

You can change the value of your interactive prompt :

export PS1="[\u@\h:\w ] $ "

Where:

\a : an ASCII bell character (07)
\d : the date in “Weekday Month Date” format (e.g., “Tue May 26”)
\D{format} : the format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specific time representation. The braces are required
\e : an ASCII escape character (033)
\h : the hostname up to the first ‘.’
\H : the hostname
\j : the number of jobs currently managed by the shell
\l : the basename of the shell’s terminal device name
\n : newline
\r : carriage return
\s : the name of the shell, the basename of $0 (the portion following the final slash)
\t : the current time in 24-hour HH:MM:SS format
\T : the current time in 12-hour HH:MM:SS format
\@ : the current time in 12-hour am/pm format
\A : the current time in 24-hour HH:MM format
\u : the username of the current user
\v : the version of bash (e.g., 2.00)
\V : the release of bash, version + patch level (e.g., 2.00.0)
\w : the current working directory, with $HOME abbreviated with a tilde
\W : the basename of the current working directory, with $HOME abbreviated with a tilde
\! : the history number of this command

Afterwards just add it to your ~/.bashrc

Timothea answered 15/8, 2020 at 21:25 Comment(0)
D
1

This is built into Poety Version 1.2 now: https://python-poetry.org/docs/configuration/#virtualenvsprompt

virtualenvs.prompt Type: string

Default: {project_name}-py{python_version}

Introduced in 1.2.0

Format string defining the prompt to be displayed when the virtual environment is activated. The variables project_name and python_version are available for formatting.

Devin answered 5/12, 2022 at 18:14 Comment(0)
A
0

To shorten the bash prefix of your environments, you'll have to do it in two times:

  1. Either deactivate (base) conda environment OR only hide (base) prefix in prompt
# Deactivate
(base) user@mycomputer> conda deactivate
user@mycomputer>

# or Hide
(base) user@mycomputer> conda config --set changeps1 false
(base) user@mycomputer> conda env list
# conda environments:
#
blog                     /home/user/anaconda3/envs/blog
base                  *  /home/user/anaconda3

Note that:

  • the latter setting will hide ALL active environment from prompt. conda env list or equivalently conda info --envs should be used to see which env is active (suffixed with *)
  • the CLI should be restarted to see the change
  1. Shorten the name of poetry env as it pleases you (As @Zaffer pointed it out this is builtin as of Poetry v1.2.0)
user@mycomputer> poetry config virtualenvs.prompt "py{python_version}"

Note that this change will apply to new environments, so you'll have to recreate it. Here is a snippet to test the new setting:

# create empty project and activate env
user@mycomputer:~ > mkdir test && cd test
user@mycomputer:~/test> poetry init -n && poetry shell
(py3.10) user@mycomputer:~/test> exit
user@mycomputer:~/test> rm -rf .venv
user@mycomputer:~/test> poetry config virtualenvs.prompt "_python_{python_version}"
user@mycomputer:~/test> poetry init -n && poetry shell
(_python_3.10) user@mycomputer:~/test> exit
...

PS: this was tested with virtual env set within project directory (poetry config virtualenvs.in-project true but you can put it wherever you want.

Ablation answered 3/8, 2023 at 9:57 Comment(0)
M
0

I am using Poetry (version 1.4.2). Just go to the pvenv.cfg file in the .venv folder. There you can change prompt variable (which is the str that appears inside the columns) to whatevever you like.

Microparasite answered 11/8, 2023 at 1:22 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.