我最近在我工作的地方遇到了一个cron脚本:
/bin/bash -c "[[ -s $HOME/.pythonbrew/etc/bashrc ]] && source $HOME/.pythonbrew/etc/bashrc && pythonbrew use 2.6.7 && pythonbrew venv use someapp && python /opt/someapp/bin/someapp.py"
这是用于Pythonbrew的系统范围(多用户)安装。在
它起作用了。但请告诉我还有更好的方法。在
为了澄清我在寻找什么:我想要一个单行的命令,通过一个绑定到pythonbrew的virtualenv来运行我的脚本。单独使用virtualenv,我可以这样做:
/opt/someapp/venv/bin/python /opt/someapp/bin/someapp.py
我不希望另一个脚本运行我的脚本(就像上面的cron命令)。在
我相信可以通过直接从您的虚拟环境
pythonbrew
使用python二进制文件来实现。 默认情况下它位于~/.pythonbrew/venvs/Python-<version>/<name of venv>/bin/python
但我认为你可以用环境变量来改变路径。在因此,只需更改添加的行的前半部分以引用
pythonbrew
虚拟环境python二进制文件,它应该可以工作了。在在python脚本的第一行添加一个shebang(#!)后面是指向目标python的路径。然后使python脚本可执行。然后可以直接从命令行执行它(crontab,另一个bash脚本,随便什么)。在
在临时目录中创建一个虚拟环境:
在这个venv中到python的路径是/tmp/venv/bin/python
使用编辑器创建一个包含以下所有内容的简单脚本:
^{pr2}$在主目录中另存为“mypyscript.py““
使其可执行:
现在您应该可以直接在命令行上使用文件名执行它:
对你的someapp.py替换到python的相关路径,这样就可以了。在
最后发现的诀窍是找到pythonbrew virtualenv的python二进制文件。Mark's answer给我指出了正确的方向。但这里有一个完整的摘要供将来参考:
使用pythonbrew installed,我执行了以下操作(作为服务器上的
root
):我有一个pip冻结文件,所以我用它来设置我的virtualenv:
^{pr2}$现在我的python二进制文件可以在
/usr/local/pythonbrew/venvs/Python-2.6.6/myapp/bin/python
找到。所以要运行我的脚本:相关问题 更多 >
编程相关推荐