2013-10-10 31 views
0

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

这是我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不?有任何想法吗?

回答

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'): 
+0

但是它为什么会失败?我宁愿修复它以解决这个问题。我更喜欢更简单的解决方案,比如'workon foobar',我不必为我的virtualenv输入整个路径。 但我喜欢你的实用方法,因为它解决了我的问题。谢谢。 – Semmel

+0

我不知道它为什么失败,你没有提供足够的信息来调试。看看我的编辑可能的缓解。另外,如果我解决了您的问题,您能否将我的答案标记为已接受? – Thomas

0

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

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

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

[庆典]寻找〜/ .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') 
相关问题