2013-10-10 108 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') 
相關問題