第二章:開發環境設置?

根據使用場景的不同,有多種安裝Odoo的方法。本教程將采用 源碼安裝 ( 從源代碼運行Odoo ),這是最適合Odoo開發人員的方式。

在本文檔中,我們假設您正在安裝開發環境,使用由Odoo提供的已安裝并更新的Linux Mint筆記本電腦。如果不是這種情況,請在安裝指南的任何部分中選擇 WindowsMac OS 選項卡,具體取決于您使用的操作系統。步驟基本相同。

設置Git?

安裝并配置Git?

安裝過程的第一步是安裝 Git 版本控制系統,因為 Odoo 源代碼是在 GitHub 上管理的。

$ sudo apt install git

小技巧

檢查 Git 是否已安裝,使用以下命令嘗試打印 Git 的版本:

$ git --version

安裝完成后,請注冊您的姓名和電子郵件:

$ git config --global user.name "Your full name (trigram)"
$ git config --global user.email "xyz@odoo.com"

配置GitHub?

您需要一個 GitHub 賬戶來獲取源代碼并為 Odoo 的開發做出貢獻。如果您還沒有賬戶,請創建一個。對于用戶名,我們建議使用您的三字代碼 “xyz”(或四字代碼)后跟 ‘-odoo’:’xyz-odoo’。

與 GitHub 進行身份驗證的最簡單方法是使用 SSH 連接。使用 SSH 身份驗證可讓您連接到 GitHub,而無需每次輸入命令時提供用戶名和密碼。

注解

下面的逐步操作基于 官方 GitHub 文檔。

  1. 生成一個新的SSH密鑰,將其添加到ssh-agent中,并將SSH密鑰復制到剪貼板。

    $ ssh-keygen -t ed25519 -C "xyz@odoo.com"
    $ ssh-add ~/.ssh/id_ed25519
    $ sudo apt install xclip
    $ xclip -sel clip < ~/.ssh/id_ed25519.pub
    
  2. 前往 GitHub.com,然后點擊頁面右上角的個人頭像,再點擊 Settings 。

    ../../../_images/account-settings.png
  3. 在用戶設置側邊欄中,點擊 SSH 和 GPG 密鑰 。

    ../../../_images/settings-sidebar-ssh-keys.png
  4. 點擊 新建SSH密鑰 或者 添加SSH密鑰 。

    ../../../_images/ssh-add-ssh-key.png
  5. Title 字段中,添加一個新鍵的描述性標簽。

  6. 將您的密鑰粘貼到 密鑰 字段中。

    ../../../_images/ssh-key-paste.png
  7. 點擊 添加SSH密鑰 。

獲取源代碼?

現在是獲取Odoo源代碼的時候了。首先,讓我們在 $HOME/src/ 中創建一個Git倉庫的主目錄。

$ mkdir -p $HOME/src
$ cd $HOME/src

然后,按照 安裝Odoo指南 中所述,使用SSH克隆這兩個倉庫。

小技巧

克隆存儲庫需要一些時間,請在等待時享受一杯咖啡。

配置 Git 倉庫?

要為Odoo存儲庫做出貢獻,您首先需要 fork它,然后在分支上創建包含您的更改的分支,最后向存儲庫提交 Pull Request。

小技巧

如果你有幸在Odoo工作,那么這些分支已經存在了。它們托管在 https://github.com/odoo-dev/odoohttps://github.com/odoo-dev/enterprise 上。

創建完兩個分支后,它們的遠程地址可以添加到您的本地倉庫中。在下面的命令中,如有需要,請將 odoo-dev/odooodoo-dev/enterprise 替換為您的分支名稱。

$ cd  $HOME/src/odoo
$ git remote add odoo-dev git@github.com:odoo-dev/odoo.git  # Add odoo-dev as a new remote.
$ git remote rename origin odoo  # Change the name of origin (the odoo repository) to odoo.
$ git remote set-url --push odoo no_push  # Remove the possibility to push directly to odoo (you can only push to odoo-dev).

$ cd  $HOME/src/enterprise
$ git remote add enterprise-dev git@github.com:odoo-dev/enterprise.git
$ git remote rename origin enterprise
$ git remote set-url --push enterprise no_push

安裝依賴項?

第一章:架構概述 所示,Odoo的服務器運行在Python上,并使用PostgreSQL作為關系型數據庫管理系統。在開發機上,最簡單的方法是本地安裝所有必要的組件。為此,請再次按照 安裝Odoo指南 進行操作。

小技巧

一些有用的 SQL 命令:

$ createdb $DB_NAME  # Create a database.
$ dropdb $DB_NAME  # Drop a database.

$ psql $DB_NAME  # Connect to a database.
    \l  #List all the available databases.
    \dt  #List all the tables of the $DB_NAME database.
    \d $TABLE_NAME  #Show the structure of the table $TABLE_NAME.
    \q  #Quit the psql environment (ctrl + d).

運行服務器?

使用 odoo-bin 啟動?

一旦所有依賴項都設置好了,可以通過運行服務器的命令行界面 odoo-bin 來啟動 Odoo。

$ cd $HOME/src/odoo/
$ ./odoo-bin --addons-path="addons/,../enterprise/" -d rd-demo

有多個 命令行參數 可以用來運行服務器。在本教程中,您只需要其中的一些。

-d <database>?

將要使用的數據庫。

--addons-path <directories>?

存儲模塊的目錄列表,用逗號分隔。這些目錄將被掃描以查找模塊。

--limit-time-cpu <limit>?

限制每個請求的工作進程使用不超過<limit> CPU秒。

--limit-time-real <limit>?

防止工作進程在處理請求時超過<limit>秒。

小技巧

  • 可以使用 --limit-time-cpu--limit-time-real 參數,防止在調試源代碼時工作進程被殺死。

  • 你可能會遇到類似于 AttributeError: module '<MODULE_NAME>' has no attribute '<$ATTRIBUTE>' 的錯誤。在這種情況下,你可能需要使用 $ pip install --upgrade --force-reinstall <MODULE_NAME> 命令重新安裝該模塊。
    如果這個錯誤發生在多個模塊中,你可能需要使用 $ pip install --upgrade --force-reinstall -r requirements.txt 重新安裝所有的依賴。
    您也可以清除Python緩存來解決此問題:
    $ cd $HOME/.local/lib/python3.8/site-packages/
    $ find -name '*.pyc' -type f -delete
    
  • 其他常用的參數包括:

    • -i : 在運行服務器之前安裝一些模塊(逗號分隔的列表)。

    • -u : 在運行服務器之前更新一些模塊(逗號分隔列表)。

登錄Odoo?

在瀏覽器中打開 http://localhost:8069/。我們建議使用 Chrome <https://www.google.com/intl/en/chrome/> , Firefox <https://www.mozilla.org/firefox/new/> 或任何其他帶有開發工具的瀏覽器。

要登錄管理員用戶,請使用以下憑據:

  • 電子郵件: admin

  • 密碼: admin

啟用開發者模式?

開發者或調試模式對于培訓非常有用,因為它可以訪問其他(高級)工具。在接下來的章節中, 我們將始終假設您已啟用了開發者模式 。

現在啟用開發者模式 。選擇您喜歡的方法;它們都是等效的。

注解

只有至少安裝了一個應用程序,才能訪問設置屏幕的主頁面。在下一章節中,您將被引導安裝自己的應用程序。

額外工具?

有用的 Git 命令?

以下是一些日常工作中有用的 Git 命令。

  • 切換分支:
    當您切換分支時,兩個倉庫(odoo 和 enterprise)必須同步,即兩者都需要在同一個分支中。
    $ cd $HOME/src/odoo
    $ git switch 16.0
    
    $ cd $HOME/src/enterprise
    $ git switch 16.0
    
  • 獲取并變基:

    $ cd $HOME/src/odoo
    $ git fetch --all --prune
    $ git rebase --autostash odoo/16.0
    
    $ cd $HOME/src/enterprise
    $ git fetch --all --prune
    $ git rebase --autostash enterprise/16.0
    

代碼編輯器?

如果你在Odoo工作,你的許多同事都在使用 VSCode、 VSCodium <https://vscodium.com>`_(開源替代品)、 `PyCharmSublime Text。但是,你可以自由選擇你喜歡的編輯器。

配置您的 Linter 是非常重要的。使用 Linter 可以幫助您顯示語法和語義警告或錯誤。Odoo 源代碼盡力遵守 Python 和 JavaScript 的標準,但有些標準可以忽略。

對于Python,我們使用PEP8,忽略這些選項:

  • E501 : 行太長

  • E301 : 預期有1個空行,但找到了0個

  • E302 : 預期有2個空行,但只找到1個

對于 JavaScript,我們使用 ESLint,您可以在此處找到 `配置文件示例<https://github.com/odoo/odoo/wiki/Javascript-coding-guidelines#use-a-linter>`_。

PostgreSQL的管理員工具?

您可以使用命令行管理您的PostgreSQL數據庫,就像之前演示的那樣,或者使用GUI應用程序,例如 pgAdminDBeaver。

我們建議您使用Unix套接字連接來連接GUI應用程序和數據庫。

  • 主機名/地址: /var/run/postgresql

  • 端口: 5432

  • 用戶名: $USER

Python調試?

當面對錯誤或者試圖理解代碼運行時,簡單地打印輸出可以解決很多問題,但是一個合適的調試器可以節省很多時間。

你可以使用經典的Python庫調試器( pdb、 pudbipdb),或者使用你的編輯器調試器。

在下面的例子中,我們使用ipdb,但使用其他庫的過程類似。

  1. 安裝庫:

    pip install ipdb
    
  2. 放置觸發器(斷點):

    import ipdb; ipdb.set_trace()
    

    Example

    def copy(self, default=None):
        import ipdb; ipdb.set_trace()
        self.ensure_one()
        chosen_name = default.get('name') if default else ''
        new_name = chosen_name or _('%s (copy)') % self.name
        default = dict(default or {}, name=new_name)
        return super(Partner, self).copy(default)
    

這是一份命令列表:

h(elp) [command]?

如果沒有提供參數,則打印可用命令的列表。如果提供了命令作為參數,則打印有關該命令的幫助信息。

pp expression?

使用 pprint 模塊對 expression 的值進行漂亮的打印。

w(here)?

打印堆棧跟蹤,最近的幀在底部。

d(own)?

將當前幀在堆棧跟蹤中向下移動一級(到一個較新的幀)。

u(p)?

將當前幀在堆棧跟蹤中向上移動一級(到舊幀)。

n(ext)?

繼續執行,直到當前函數中的下一行被執行或函數返回。

c(ontinue)?

繼續執行,只有在遇到斷點時才停止。

s(tep)?

執行當前行。在可能的第一個機會停止(在被調用的函數中或在當前函數的下一行)。

q(uit)?

退出調試器。正在執行的程序被中止。

現在你的服務器已經運行,是時候開始 編寫你自己的應用程序 了!