【问题标题】:How can I run a python script using pythonbrew venv from the command line?如何从命令行使用 pythonbrew venv 运行 python 脚本?
【发布时间】:2013-04-09 20:30:51
【问题描述】:

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

【问题讨论】:

    标签: python virtualenv pythonbrew


    【解决方案1】:

    我相信可以通过直接从您pythonbrew 虚拟环境中使用 python 二进制文件来完成。 默认在~/.pythonbrew/venvs/Python-<version>/<name of venv>/bin/python 但我认为您可以使用环境变量更改路径。

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

    【讨论】:

    • 在我的例子中,python 二进制文件原来位于:/usr/local/pythonbrew/venvs/Python-<version>/<name of venv>/bin/python
    【解决方案2】:

    在你的 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,这应该可以工作。

    【讨论】:

      【解决方案3】:

      原来的诀窍是找到 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
      

      【讨论】:

        猜你喜欢
        • 2019-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-13
        • 1970-01-01
        • 2018-07-22
        相关资源
        最近更新 更多