最近在尝试使用poetry来进行项目的包管理,发现poetry创建的虚拟环境中,命令行提示符特别的长。
比如我创建了一个名为”test-poetry”的项目,那么使用 poetry shell 命令激活虚拟环境后,却发现整个命令行提示符如此之长:
(test-poetry-FvrREBVp-py3.6) knktc@knktc-rmbp test_poetry %
因为poetry自动为虚拟环境编了个码,同时还加上了python版本号,都放到命令行提示符里作为前缀就很长了。对于小屏幕的用户来说(比如我这13寸笔记本的用户)就很不友好了。
还是想想怎么缩短下这个括号中的环境名称吧。
因为这些虚拟环境都是用bin/activate命令来启动的,所以可以尝试定位下activate命令到底在哪里。
可以在项目目录下(确认当前目录下有pyproject.toml文件即可),执行以下的命令:
1 | poetry env info -p |
此时会打印出来环境的path信息,比如:
1 | (test-poetry-FvrREBVp-py3.6) knktc@knktc-rmbp test_poetry % poetry env info -p |
那么我们就可以直接到这个目录下去找bin/activate文件来修改了:
1 | vim /Users/knktc/Library/Caches/pypoetry/virtualenvs/test-poetry-FvrREBVp-py3.6/bin/activate |
在代码的第68行左右可以看到设置PS1的相关代码,这里其实是用了环境的目录名来做为了命令行提示符的前缀:
1 | if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT-}" ] ; then |
那么我们可以修改下这句,直接改成项目的名称就好了:
1 | if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT-}" ] ; then |
然后保存退出,重新激活下环境:
1 | knktc@knktc-rmbp test_poetry % poetry shell |
这下就好了~