2014-02-25 17 views
2

我最近開始使用pew而不是virtualenvwrapper + virtualenv如何在bash/Python/Fabric/sh腳本中使用pew?

在交互式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,Fabricsh將最佳滿足我的需求。

[3]背地裏,我寧願在魚,而不是bash中使用它,但似乎深奧:)

回答

5

我在一個交互的shell親自使用皮尤只,但也有使用皮尤一些命令沿着一些腳本。讓我們用這個作爲一個例子:

pew in env which python 
pew in env ./script.sh 

(這兩個會做同樣的事情)

你還可以:

>cat script.sh 
#!/bin/bash 
which python  

您可以在virtualenv中與in命令執行任意代碼使用-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結束的命令都可以使用,對於其他(新的,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