我最近开始使用pew而不是virtualenvwrapper + virtualenv。
在交互式shell中工作时,这是一个不错的选择。但是,我仍然在我的bash脚本中使用virtualenvwrapper [1],我正在考虑编写一些支持virtualenv的Python脚本[2]。
鉴于pew workon
启动了一个新提示,我可以在shell [3]和Python脚本中使用它吗?如果是这样,怎么样?
[1]使用以下代码片段,这正是我想要摆脱的:
# make sure we can workon (the path is Ubuntu-specific)
[[ $(type -t workon) == "function" ]] || source /etc/bash_completion.d/virtualenvwrapper
[2]我还在研究哪种普通的Python,Fabric和sh最适合我的需要。
[3]偷偷地说,我宁愿在鱼而不是猛击中使用它,但这看起来很深奥:)
答案 0 :(得分:5)
我个人仅在交互式shell中使用pew,但是有一些命令可用于在一些脚本中使用pew。我们以此为例:
>cat script.sh
#!/bin/bash
which python
您可以使用in
命令在virtualenv中执行任意代码:
pew in env which python
pew in env ./script.sh
(这两个会做同样的事情)
你也可以使用-d
标志来避免在创建时激活它,因此你可以在这样的脚本中使用pew:
pew new -d yourenv > /dev/null
pew in yourenv which python
我认为使用像inve这样的东西在shell脚本中没有任何真正的优势:如果你有像
这样的东西#!/bin/sh
. ~/.virtualenvs/yourenv/bin/activate
which python
采购脚本不会污染执行采购的脚本之外的事情
OTOH:使用pew或virtualenvwrapper可能对执行复制/重命名环境的任务很有用。任何不以invoke(inve)
in the pew source code结尾的命令都可以使用,对于其他命令(new,mkproject,mktmpenv,cp)应该有一个--dont-activate
标志可用。
(我刚刚意识到cp命令没有-d
标志,我可能不得不尽快添加它)
编辑:更多示例
> pew new -d dummy -i e
> pew in dummy python -me 2 "**" 53
dummy:
9007199254740992
> pew in dummy python helloworld.py
dummy:
helloworld