0

我有一个在 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 不行?有任何想法吗?

4

2 回答 2

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'):
于 2013-10-11T01:33:35.520 回答
0

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

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')
于 2015-12-07T04:54:18.550 回答