【问题标题】:Fabric and virtualenv working on Ubuntu but not on SolarisFabric 和 virtualenv 在 Ubuntu 上工作,但在 Solaris 上不工作
【发布时间】:2013-10-10 21:35:07
【问题描述】:

我有一个在 Ubuntu 和 Solaris 上运行的项目。 Fabric 在 Ubuntu 上运行良好,但在 Solaris 上不行。如果我在 virtualenv 中尝试某些东西,它会以 workon: command not found 失败。

这就是我的 fabfile.py 的样子:

with prefix('workon %s' % env.virtualenv):
    sudo('manage.py collectstatic --noinput')

我将这些行放在两个平台上的 .profile 中:

export WORKON_HOME=$HOME/.virtualenvs
source /path/to/virtualenvwrapper.sh

这就是我所做的一切。为什么 Ubuntu 可以工作,而 Solaris 不行?有什么想法吗?

【问题讨论】:

    标签: django ubuntu solaris fabric virtualenvwrapper


    【解决方案1】:

    失败的是 Virtualenvwrapper,而不是 Fabric 或 Virtualenv。尝试直接使用 Virtualenv:

    with prefix('source path/to/virtualenv/bin/activate'):
        sudo('manage.py collectstatic --noinput')
    

    编辑:

    要尝试修复 virtualenvwrapper,请尝试将您的代码包装在以下内容中,看看它是否解决了原始错误。

    with prefix('source path/to/virtualenvwrapper.sh'):
    

    【讨论】:

    • 但是为什么会失败呢?我宁愿修复它来解决这个问题。而且我更喜欢像workon foobar 这样更简单的解决方案,我不必为我的virtualenv 输入整个路径。但我喜欢你务实的方法,因为它解决了我的问题。谢谢。
    • 我不知道它为什么会失败,你没有提供足够的信息来调试它。请参阅我的编辑以了解可能的缓解措施。另外,如果我解决了您的问题,您能否将我的答案标记为已接受?
    【解决方案2】:

    考虑一下您将以下内容放在哪里?

    export WORKON_HOME=/opt/virtual_envs
    source /usr/local/bin/virtualenvwrapper.sh
    

    根据 man bash 的说法,-l 标志,即面料问题,将导致以下情况发生

    [bash] 按此顺序查找 ~/.bash_profile、~/.bash_login 和 ~/.profile,并从第一个存在且可读的命令中读取并执行命令。

    我在 .bashrc 中有这个引导代码,它不是由 bash -l 获取的。我把这两行移到了 .profile 中,现在可以做下面的织物线了。 (我没有 .bash_profile 或 .bash_login)

    with cd('/www/code'):
        with prefix('workon code'):
            run('./manage.py validate')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多