如何从命令行使用pythonbrewvenv运行python脚本?

2024-05-16 11:06:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近在我工作的地方遇到了一个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命令)。在


Tags: py命令脚本homebinvirtualenvvenvuse
3条回答

我相信可以通过直接从您的虚拟环境pythonbrew使用python二进制文件来实现。 默认情况下它位于~/.pythonbrew/venvs/Python-<version>/<name of venv>/bin/python 但我认为你可以用环境变量来改变路径。在

因此,只需更改添加的行的前半部分以引用pythonbrew虚拟环境python二进制文件,它应该可以工作了。在

在python脚本的第一行添加一个shebang(#!)后面是指向目标python的路径。然后使python脚本可执行。然后可以直接从命令行执行它(crontab,另一个bash脚本,随便什么)。在

在临时目录中创建一个虚拟环境:

$ cd /tmp
$ virtualenv venv

在这个venv中到python的路径是/tmp/venv/bin/python

使用编辑器创建一个包含以下所有内容的简单脚本:

^{pr2}$

在主目录中另存为“mypyscript.py““

使其可执行:

$ chmod 755 mypyscript.py

现在您应该可以直接在命令行上使用文件名执行它:

$ ./mypyscript.py
hello world

对你的someapp.py替换到python的相关路径,这样就可以了。在

最后发现的诀窍是找到pythonbrew virtualenv的python二进制文件。Mark's answer给我指出了正确的方向。但这里有一个完整的摘要供将来参考:

使用pythonbrew installed,我执行了以下操作(作为服务器上的root):

pythonbrew install 2.6.6
pythonbrew switch 2.6.6
pythonbrew venv create  no-site-packages myapp

我有一个pip冻结文件,所以我用它来设置我的virtualenv:

^{pr2}$

现在我的python二进制文件可以在/usr/local/pythonbrew/venvs/Python-2.6.6/myapp/bin/python找到。所以要运行我的脚本:

/usr/local/pythonbrew/venvs/Python-2.6.6/myapp/bin/python /opt/myapp/bin/myapp.py

相关问题 更多 >