2013-01-06 100 views
1

我用這個指南: http://www.jeffknupp.com/blog/2012/02/09/starting-a-django-project-the-right-way/Django的部署 - 類型錯誤:prepare_deployment()恰恰1個參數(0給出)

要建立我的Django項目。但我被困在部署部分。 我在我的virtualenv中使用pip安裝了fabric。 我創建的myproject目錄中文件:

from fabric.api import local 

def prepare_deployment(branch_name): 
    local('python manage.py test finance') 
    local('git add -p && git commit') 
    local('git checkout master && git merge ' + branchname) 

from fabric.api import lcd 

def deploy(): 
    with lcd('home/andrius/djcode/myproject/'): 
     local('git pull /home/andrius/djcode/dev/') 
     local('python manage.py migrate finance') 
     local('python manage.py test finance') 
     local('/my/command/to/restart/webserver') 

但是,當我輸入下面的命令(如圖所示的指南):

fab prepare_deployment

我得到這個錯誤:

Traceback (most recent call last): 
    File "/home/andrius/env/local/lib/python2.7/site-packages/fabric/main.py", line 732, in main 
    *args, **kwargs 
    File "/home/andrius/env/local/lib/python2.7/site-packages/fabric/tasks.py", line 345, in execute 
    results['<local-only>'] = task.run(*args, **new_kwargs) 
    File "/home/andrius/env/local/lib/python2.7/site-packages/fabric/tasks.py", line 121, in run 
    return self.wrapped(*args, **kwargs) 
TypeError: prepare_deployment() takes exactly 1 argument (0 given) 

所以即使它沒有在參數指南中指定,我想它需要我的分支名稱。所以,進入這個:

fab prepare_deployment v0.1

(V0.1是我的分支名) 所以現在我得到這個錯誤:

Warning: Command(s) not found: 
    v0.1 

Available commands: 
    deploy 
    prepare_deployment 

而且我在功能prepare_deployment文件fabfile.py一個指南中注意到,輸入寫爲'branch_name',內部函數中有參數'branchname'。所以我認爲它應該是相同的,並將'branchname'重命名爲'branch_name',但仍然會出現相同的錯誤。

所以我想我在這裏做錯了什麼。可能是什麼問題呢?

更新: 我試着打電話給函數內部fabfile.py有:

prepare_deployment("v0.1")

輸出是這樣的:

[localhost] local: python manage.py test finance 
Creating test database for alias 'default'... 
Got an error creating the test database: permission denied to create database 

Type 'yes' if you would like to try deleting the test database 'test_finance', or 'no' to cancel: yes 
Destroying old test database 'default'... 
Got an error recreating the test database: database "test_finance" does not exist 


Fatal error: local() encountered an error (return code 2) while executing 'python manage.py test finance' 

Aborting. 

我想我還要提到的是我的應用程序的名稱是「融資」作爲數據庫名稱'財務'。也許那些衝突?

回答

5

面料使用特定語法參數傳遞給任務從命令行。從bash shell中,你將需要使用

fab prepare_deployment:v0.1 

您可以在fabric documentation on per task arguments讀到它。

如果你真的需要在bash命令中使用括號,你需要轉義它們。

+0

它運行,但給了我錯誤:創建測試數據庫時發生錯誤:拒絕創建數據庫的權限 部署時是否需要一些額外的數據庫連接配置? – Andrius

+0

你可以從命令行運行'python manage.py test finance'沒有錯誤嗎? – aychedee

+0

不,給出同樣的錯誤。如果數據庫名稱和應用程序名稱相同,我認爲它並不重要? 它給所有的應用程序的錯誤。所以它出於某種原因不能訪問數據庫。 – Andrius

0

正如你所說,這個功能應該是這樣的......

def prepare_deployment(branch_name): 
    local('python manage.py test finance') 
    local('git add -p && git commit') 
    local('git checkout master && git merge ' + branch_name) 

然後你只需撥打...

fab prepare_deployment("v0.1") 
+0

這個人給我的錯誤:慶典:語法錯誤附近意外的標記'(」 但後來我想只是調用fabfile.py寫作裏面功能: prepare_deployment(‘V0.1’) – Andrius

+0

有什麼錯誤? –

相關問題