Linux 使用别名激活virtualenv

Linux 使用别名激活virtualenv,linux,bash,virtualenv,Linux,Bash,Virtualenv,我可以通过输入从其文件夹激活python虚拟环境。bin/激活。我想从主文件夹(或其他任何地方)键入一个单词别名,例如shazam,以激活环境、更改主项目文件夹并列出我的项目 我尝试在.bashrc中创建一个指向.sh文件的别名,该文件包含: cd ~/path-to-virtual-environment . bin/activate cd ~/path-to-master-project-folder ls -a 我收到一个权限被拒绝的错误,所以我运行了chmod u+x。脚本现在运行,但

我可以通过输入
从其文件夹激活python虚拟环境。bin/激活
。我想从主文件夹(或其他任何地方)键入一个单词别名,例如
shazam
,以激活环境、更改主项目文件夹并列出我的项目

我尝试在.bashrc中创建一个指向.sh文件的别名,该文件包含:

cd ~/path-to-virtual-environment
. bin/activate
cd ~/path-to-master-project-folder
ls -a

我收到一个权限被拒绝的错误,所以我运行了
chmod u+x
。脚本现在运行,但VE不会激活,并且在列出项目文件夹时,shell不在主项目文件夹中。我希望得到一些指导。谢谢。

~/.virtualenvs
中重新创建您的所有环境,然后安装
virtualenvwrapper
。激活环境的命令是
workon shazam
。支持命令行完成

现在谈谈您的问题:您试图在shell脚本中激活一个环境。这不起作用,因为shell脚本与另一个shell一起运行,环境激活会更改它们的环境,而不是当前的环境。即,环境短暂激活,但在脚本结束时,新shell退出,环境停用

有两种方法可以克服这个问题

  • 使用别名或shell函数而不是脚本-它们是更改当前shell环境的唯一方法

  • 在脚本末尾运行交互式shell(
    exec$shell
    )。它继承激活的环境,并提供命令提示。要停用,只需退出shell(
    exit
    或[Ctrl]+[D])


  • 更好的办法是,查看VirtualNVRapper,它使管理VirtualNVs变得更容易。Stack Overflow是一个关于编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的提问的地方。谢谢你的建议。堆栈溢出似乎是一个合适的场所,因为这个问题是关于访问我的开发环境的,而且还有其他关于别名、bash脚本和访问虚拟环境的问题(但与我试图做的不完全相同)。使用shell函数是可行的。非常感谢。添加“exec$SHELL”未激活虚拟环境--可能是用户错误。我读过VirtualVWrapper,虽然我看到了它的好处,但我并不认为有足够的环境来保证额外的复杂性。如果我的情况改变,我会再去看看。