我最近开始使用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] secret 地,我更愿意在 Fish 中使用它而不是 bash,但这看起来很深奥:)
最佳答案
我个人仅在交互式 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
关于python - 如何在 bash/Python/Fabric/sh 脚本中使用 pew?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22018185/