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

时间:2013-04-09 20:30:51

标签: python virtualenv pythonbrew

我最近在我的工作地点用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命令一样)。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

在python脚本的第一行添加一个shebang(#!),后跟一个指向目标python的路径。然后使python脚本可执行。然后可以直接从命令行执行它(crontab,另一个bash脚本,无论如何)。

在临时目录中制作虚拟环境:

$ cd /tmp
$ virtualenv venv

在那个venv中你的python的路径是/ tmp / venv / bin / python

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

#!/tmp/venv/bin/python
print("hello world")

将其作为“mypyscript.py”

保存在您的主目录中

使其可执行:

$ chmod 755 mypyscript.py

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

$ ./mypyscript.py
hello world

对你的someapp.py执行此操作,将相关路径替换为python,这应该可行。

答案 2 :(得分:1)

诀窍是找到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:

/usr/local/pythonbrew/venvs/Python-2.6.6/myapp/bin/pip install -r /tmp/requirements.pip

现在我的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