python - 如何在 bash/Python/Fabric/sh 脚本中使用 pew?

标签 python bash shell virtualenv

我最近开始使用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,Fabricsh将最适合我的需求。

[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/

相关文章:

bash - 为什么嵌套参数扩展在 GitLab CI/CD 中不能正常工作?

linux - 如何在 bash 脚本中执行命令,然后聚焦出现的窗口

linux - 如何在shell脚本中跳转解压目录?

shell - 如何在一行中为不同的 shell 获取所有用户的最后登录时间

c - 如何实现shell输出作为C语言的输入?

python - 从另一个 .py 文件访问 Python 字典不会更新 Kivy 标签

python - 什么时候使用 python sunder 名称?

python - 使用 Python 广播 UDP 字符串

bash - shell 脚本 : intersperse comments between multiline logical operators

python - 如何使用 python minidom 从 XML 中提取数据