命令行界面(CLI)?

CLI(命令行界面)提供了與Odoo相關的多個功能。您可以使用它來: 運行服務器 , 啟動Odoo作為Python控制臺環境 , 搭建Odoo模塊 , 填充數據庫 ,或者 計算代碼行數 。

重要

調用CLI的命令取決于您如何安裝Odoo。在下面的示例中,我們假設您使用 odoo-bin 文件從源代碼 運行Odoo 。如果您使用 分發包Docker 安裝了Odoo,則必須調整命令。

  1. 進入您下載的Odoo社區源代碼文件的根目錄。

  2. 使用 ./odoo-bin 運行所有CLI命令

幫助和版本?

-h, --help?

顯示所有可用選項的幫助文本

--version?

顯示Odoo版本,例如”Odoo Server 16.0”

小技巧

您可以通過運行以下命令在您的 shell 中啟用自動補全功能

echo "complete -W '`./odoo-bin --help | \
  sed -e 's/[^a-z_-]\(-\+[a-z0-9_-]\+\)/\n\1\n/' | \
  grep -- '^-' | sort | uniq | tr '\n' ' '`' odoo-bin" >> ~/.bash_completion

運行服務器?

-d <database>, --database <database>?

在安裝或更新模塊時使用的數據庫。提供逗號分隔的列表可限制訪問提供的數據庫。

對于高級數據庫選項,請查看 下面的內容 。

-i <modules>, --init <modules>?

在運行服務器之前安裝的模塊的逗號分隔列表(需要 -d )。

-u <modules>, --update <modules>?

在運行服務器之前需要更新的模塊的逗號分隔列表。使用 all 表示更新所有模塊。(需要 -d 參數)

--addons-path <directories>?

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

--upgrade-path <upgrade_path>?

指定一個額外的升級路徑。

--load <modules>?

要加載的服務器級別模塊列表。這些模塊應該提供與特定數據庫無關的功能。這與安裝時始終綁定到特定數據庫的模塊(即大多數Odoo插件)形成對比。默認值為“base,web”。

-c <config>, --config <config>?

指定一個備用的 配置文件 路徑。如果未定義,Odoo 會檢查 ODOO_RC 環境變量和默認位置 $HOME/.odoorc 。請參閱配置文件部分 下文 。

-D <data-dir-path>, --data-dir <data-dir-path>?

存儲Odoo數據的目錄路徑(例如文件存儲,會話)。如果未指定,則Odoo將回退到預定義的路徑。在Unix系統上,它是在 $XDG_DATA_HOME 環境變量中定義的一個路徑,或者是 ~/.local/share/Odoo/var/lib/Odoo 。

-s, --save?

將服務器配置保存到當前配置文件中(默認為 $HOME/.odoorc ,可以使用 -c 進行覆蓋)。

--without-demo?

禁用已安裝模塊的演示數據加載,使用逗號分隔,對于所有模塊使用 all 。需要使用 -d-i 。

--pidfile=<pidfile>?

服務器 PID 存儲的文件路徑

--stop-after-init?

在初始化后停止服務器。

--geoip-db <path>?

GeoIP數據庫文件的絕對路徑。

測試配置?

--test-enable?

在模塊安裝后運行測試

--test-file <file>?

運行一個 Python 測試文件

--test-tags [-][tag][/module][:class][.method]?

逗號分隔的規范列表,用于過濾要執行的測試。如果設置,則啟用單元測試。

示例: --test-tags :TestClass.test_func,/test_module,external

  • “-” 指定我們是要包含還是排除與此規范匹配的測試。

  • 該標記將匹配使用 tagged() 裝飾器添加到類上的標記(所有的 測試類 都有 standardat_install 標記,除非顯式地刪除,詳見裝飾器文檔)。

  • * 將匹配所有標簽。

  • 如果在包含模式下省略了標簽,則其值為“standard”。

  • 如果在排除模式下省略了標簽,則其值為“*”。

  • 模塊、類和方法將分別匹配模塊名稱、測試類名稱和測試方法名稱。

測試的篩選和執行會發生兩次:在每個模塊安裝/更新之后和模塊加載結束時。在每個階段,測試都會通過 --test-tags 規范進行篩選,并通過動態規范 at_installpost_install 進一步篩選。

--screenshots?

指定在HttpCase.browser_js測試失敗時寫入截圖的目錄。默認為: /tmp/odoo_tests/db_name/screenshots

--screencasts?

啟用屏幕錄制并指定寫入屏幕錄制文件的目錄。需要安裝 ffmpeg 實用程序將幀編碼為視頻文件。否則,幀將被保留而不是視頻文件。

數據庫?

-r <user>, --db_user <user>?

數據庫用戶名,用于連接到 PostgreSQL。

-w <password>, --db_password <password>?

數據庫密碼,如果使用 password authentication。

--db_host <hostname>?

數據庫服務器的主機

  • Windows 上的 localhost

  • 否則為UNIX套接字

--db_port <port>?

數據庫監聽的端口,默認為5432

--db-filter <filter>?

隱藏不符合 <filter> 的數據庫。過濾器是一個 正則表達式,其中包含以下內容的添加:

  • %h 會被替換為發出請求的完整主機名。

  • %d 將被替換為請求所在的子域名,但 www 除外(因此域名 odoo.comwww.odoo.com 都匹配數據庫 odoo )。

    這些操作區分大小寫。添加選項 (?i) 以匹配所有數據庫(因此使用 (?i)%d 的域名 odoo.com 匹配數據庫 Odoo )。

自版本11起,還可以使用–database參數并指定逗號分隔的數據庫列表來限制對給定數據庫的訪問權限

當結合這兩個參數時,db-filter 優先于逗號分隔的數據庫列表來限制數據庫列表,而逗號分隔的列表用于執行所請求的操作,如模塊升級。

$ odoo-bin --db-filter ^11.*$

限制訪問以11開頭的數據庫

$ odoo-bin --database 11firstdatabase,11seconddatabase

限制訪問僅限于兩個數據庫,11firstdatabase 和 11seconddatabase

$ odoo-bin --database 11firstdatabase,11seconddatabase -u base

限制訪問僅限于兩個數據庫,11firstdatabase和11seconddatabase,并在一個數據庫11firstdatabase上更新基礎模塊。如果數據庫11seconddatabase不存在,則創建該數據庫并安裝基礎模塊。

$ odoo-bin --db-filter ^11.*$ --database 11firstdatabase,11seconddatabase -u base

限制訪問以11開頭的數據庫,并在一個名為11firstdatabase的數據庫上更新基礎模塊。如果11seconddatabase數據庫不存在,則創建該數據庫并安裝基礎模塊。

--db-template <template>?

在從數據庫管理屏幕創建新數據庫時,使用指定的 模板數據庫。默認為 template0 。

--pg_path </path/to/postgresql/binaries>?

用于數據庫管理器轉儲和恢復數據庫的 PostgreSQL 二進制文件的路徑。只有在這些二進制文件位于非標準目錄中時,才需要指定此選項。

--no-database-list?

禁止列出系統上可用的數據庫

--db_sslmode?

控制Odoo和PostgreSQL之間連接的SSL安全性。值應為’disable’、’allow’、’prefer’、’require’、’verify-ca’或’verify-full’。默認值為’prefer’

--unaccent?

如果數據庫提供了unaccent函數,則使用該函數。

電子郵件?

--email-from <address>?

當Odoo需要發送郵件時,用作<FROM>的電子郵件地址

--from-filter <address or domain>?

定義 SMTP 配置將應用于哪個電子郵件地址。該字段可以是域名或完整的電子郵件地址,也可以為空。如果發件人的電子郵件地址不符合此設置的過濾器,則將使用兩個系統參數的組合來封裝電子郵件: mail.default.frommail.catchall.domain 。例如,“Admin”<admin@example.com> => “Admin”<notifications@mycompany.com>。

--smtp <server>?

連接以發送郵件的SMTP服務器的地址

--smtp-port <port>?
--smtp-ssl?

如果設置,Odoo應該使用SSL/STARTSSL SMTP連接

--smtp-user <name>?

連接 SMTP 服務器的用戶名

--smtp-password <password>?

連接SMTP服務器的密碼

--smtp-ssl-certificate-filename <path/to/cert.pem>?

將使用 SSL 證書進行身份驗證。如果設置,則需要 smtp-ssl-private-key 。

--smtp-ssl-private-key-filename <path/to/key.pem>?

使用 SSL 私鑰進行身份驗證。如果設置,則需要 smtp-ssl-certificate 。

國際化?

使用這些選項將Odoo翻譯成另一種語言。請參閱用戶手冊中的i18n部分。選項“-d”是必需的。在導入的情況下,“-l”選項是必需的。

--load-language <languages>?

指定您想要加載的翻譯語言(用逗號分隔)

-l, --language <language>?

指定翻譯文件的語言。與 –i18n-export 或 –i18n-import 一起使用。

--i18n-export <filename>?

將所有待翻譯的句子導出到 CSV 文件、PO 文件或 TGZ 壓縮包中并退出。

--i18n-import <filename>?

導入包含翻譯的 CSV 或 PO 文件并退出。必須使用 ‘-l’ 選項。

--i18n-overwrite?

在更新模塊或導入CSV或PO文件時覆蓋現有的翻譯術語。

--modules?

指定要導出的模塊。與 –i18n-export 一起使用。

高級選項?

開發人員功能?

--dev <feature,feature,...,feature>?

逗號分隔的功能列表。僅供開發目的使用,請勿在生產中使用??赡艿墓δ馨ǎ?/p>

  • all : 激活下面的所有功能

  • xml : 直接從 XML 文件中讀取 QWeb 模板,而不是從數據庫中讀取。一旦模板在數據庫中被修改,它將不會從 XML 文件中讀取,直到下一次更新/初始化。特別地,使用此選項不會翻譯模板。

  • reload : 當 Python 文件更新時重新啟動服務器(取決于所使用的文本編輯器,可能無法檢測到更新)

  • qweb : 當節點包含 t-debug='debugger' 時,在評估QWeb模板時中斷

  • (i)p(u)db : 在記錄和返回錯誤之前,在代碼中啟動選擇的Python調試器,當出現意外錯誤時。

  • werkzeug : 在異常情況下在前端頁面上顯示完整的回溯信息

HTTP?

--no-http?

不啟動HTTP或長輪詢工作進程(仍可能啟動 cron 工作進程)

警告

如果設置了 --test-enable ,則此選項無效,因為測試需要可訪問的 HTTP 服務器。

--http-interface <interface>?

HTTP 服務器監聽的 TCP/IP 地址,默認為 0.0.0.0 (所有地址)

-p <port>?
--http-port <port>?

HTTP服務器監聽的端口,默認為8069。

--gevent-port <port>?

在多進程或協程模式下用于 WebSocket 連接的 TCP 端口,默認為 8072。在默認(線程化)模式下不使用。

--proxy-mode?

啟用 X-Forwarded-* 頭部,通過 Werkzeug’s proxy support 支持。僅在運行在可信任的 Web 代理后面時啟用!

警告

代理模式 絕不能 在非反向代理場景下啟用

--x-sendfile?

將附件文件的服務委托給靜態Web服務器,并在流響應上設置 X-Sendfile (apache)和 X-Accel-* (nginx)HTTP標頭。有關Web服務器配置,請參見: 提供靜態文件和附件服務 。

日志記錄?

默認情況下,Odoo顯示所有級別為 info 的日志,除了工作流日志(僅為 warning ),并將日志輸出發送到 stdout 。有各種選項可用于將日志重定向到其他目的地并自定義日志輸出的數量。

--logfile <file>?

將日志輸出發送到指定的文件而不是標準輸出。在Unix上,該文件 `可以由外部日志輪換程序<https://docs.python.org/3/library/logging.handlers.html#watchedfilehandler>`_管理,并在被替換時自動重新打開。

--syslog?

記錄到系統的事件日志: 在Unix上使用syslog在Windows上使用事件日志。

兩者都不可配置

--log-db <dbname>?

記錄到指定數據庫的 ir.logging 模型( ir_logging 表)。數據庫可以是當前 PostgreSQL 中的數據庫名稱,也可以是用于日志聚合的 PostgreSQL URI。

--log-handler <handler-spec>?

LOGGER:LEVEL ,啟用提供的 LEVELLOGGER ,例如 odoo.models:DEBUG 將啟用模型中所有等于或高于 DEBUG 級別的日志消息。

  • 冒號 : 是必須的

  • 可以省略記錄器以配置根(默認)處理程序

  • 如果省略了級別,則記錄器將設置為“INFO”

該選項可以重復使用以配置多個記錄器,例如:

$ odoo-bin --log-handler :DEBUG --log-handler werkzeug:CRITICAL --log-handler odoo.fields:WARNING
--log-web?

啟用HTTP請求和響應的DEBUG日志記錄,相當于 --log-handler=odoo.http:DEBUG

--log-sql?

啟用 SQL 查詢的 DEBUG 日志記錄,相當于 --log-handler=odoo.sql_db:DEBUG

--log-level <level>?

快捷方式,更容易地在特定的記錄器上設置預定義級別。在 odoowerkzeug 記錄器上設置“真實”級別( critical , error , warn , debug ),除了 debug 只在 odoo 上設置。

Odoo還提供了針對不同記錄器應用的調試偽級別:

debug_sql

將 SQL 日志記錄器設置為 debug

等同于 --log-sql

debug_rpc

odoo 和HTTP請求記錄器設置為 debug

等同于 --log-level debug --log-request

debug_rpc_answer

odoo 和HTTP請求和響應記錄器設置為 debug

等同于 --log-level debug --log-request --log-response

注解

如果 --log-level--log-handler 之間存在沖突,后者將被使用。

多進程?

--workers <count>?

如果 count 不為 0(默認值),則啟用多進程并設置指定數量的 HTTP 工作進程(子進程處理 HTTP 和 RPC 請求)。

注解

多進程模式僅適用于基于Unix的系統

許多選項允許限制和回收工作進程:

--limit-request <limit>?

工作進程在被回收和重新啟動之前將處理的請求數。

默認為 8196 。

--limit-memory-soft <limit>?

每個工作進程允許的最大虛擬內存。如果超過限制,工作進程將在當前請求結束時被殺死并回收。

默認為 2048MiB 。

--limit-memory-hard <limit>?

虛擬內存的硬限制,任何超過限制的工作進程都將立即被殺死,而不必等待當前請求處理結束。

默認為 2560MiB 。

--limit-time-cpu <limit>?

防止工作進程在每個請求中使用超過<limit> CPU秒。如果超過限制,工作進程將被終止。

默認為 60 。

--limit-time-real <limit>?

防止工作進程處理請求的時間超過<limit>秒。如果超過限制,工作進程將被終止。

--limit-time-cpu 不同,這是一個包括 SQL 查詢在內的“墻時”限制。

默認為 120 。

--max-cron-threads <count>?

用于 cron 作業的工作線程數量。默認為 2 。在多線程模式下,工作線程是線程,在多進程模式下,工作線程是進程。

對于多進程模式,這是HTTP工作進程的補充。

配置文件?

大多數命令行選項也可以通過配置文件指定。大多數情況下,它們使用類似的名稱,前綴“-”被刪除,其他“-”被替換為“_”,例如: --db-template 變成了 db_template 。

一些轉換不符合模式:

默認的配置文件是 $HOME/.odoorc ,可以使用 --config 進行覆蓋。指定 --save 將當前配置狀態保存回該文件。與命令行相關的配置項應在 [options] 部分中指定。

這是一個示例文件:

[options]
db_user=odoo
dbfilter=odoo

命令行?

Odoo命令行還允許將Odoo作為Python控制臺環境啟動。這使得可以直接與 orm 及其功能進行交互。

$ odoo-bin shell
--shell-interface (ipython|ptpython|bpython|python)?

在 shell 模式下指定首選 REPL。

腳手架?

Scaffolding是自動創建骨架結構以簡化引導(在Odoo的情況下是新模塊)的過程。雖然不是必需的,但它避免了設置基本結構和查找所有起始要求的繁瑣過程。

可通過 odoo-bin scaffold 子命令進行腳手架生成。

$ odoo-bin scaffold my_module /addons/
name (required)?

要創建的模塊名稱,可以以各種方式進行修改以生成編程名稱(例如,模塊目錄名稱,模型名稱等)

destination (default=current directory)?

要創建新模塊的目錄,默認為當前目錄

-t <template>?

一個模板目錄,文件會經過 jinja2 處理后復制到 destination 目錄

這將在目錄 /addons/ 中創建模塊 my_module 。

數據庫填充?

Odoo CLI 支持數據庫填充功能。如果該功能在給定模型上 實現 ,它允許自動生成模型記錄的數據,以在包含大量記錄的數據庫中測試您的模塊。

$ odoo-bin populate
--models?

應填充數據庫的模型列表

--size (small|medium|large)?

種群大小,實際記錄數取決于模型的 _populate_sizes 屬性。生成的記錄內容由給定模型的 _populate_factories() 方法指定(有關詳細信息,請參見模塊的 populate 文件夾)。

另請參閱

數據庫填充

Cloc?

Odoo Cloc 是一種工具,用于計算Python、JavaScript、CSS、SCSS或XML中編寫的相關行數。這可以用作額外模塊維護定價的粗略度量。

命令行選項?

-d <database>, --database <database>?
處理提供的數據庫中安裝的所有額外模塊的代碼,以及在提供的數據庫中手動創建的所有服務器操作和計算字段的代碼。
需要使用 --addons-path 選項來指定模塊文件夾的路徑。
如果與 --path 結合使用,則計數將是兩個選項結果的總和(可能存在重疊)。這兩個選項中至少需要一個來指定要處理的代碼。
$ odoo-bin cloc --addons-path=addons -d my_database
-p <path>, --path <path>?
處理所提供路徑中的文件。
如果與 --database 結合使用,則計數將是兩個選項結果的總和(可能存在重疊)。必須至少使用這兩個選項之一來指定要處理的代碼。
$ odoo-bin cloc -p addons/account

可以通過重復選項來提供多個路徑。

$ odoo-bin cloc -p addons/account -p addons/sale

另請參閱

--addons-path <directories>?
以逗號分隔的目錄列表,其中存儲了模塊。這些目錄將被掃描以查找模塊。
如果使用了 --database 選項,則必須提供此參數。
-c <directories>?

指定一個配置文件來替代 --addons-path 選項。

$ odoo-bin cloc -c config.conf -d my_database
-v, --verbose?

顯示每個文件的計數行的詳細信息。

已處理的文件?

使用 --database 選項?

Odoo Cloc 統計給定數據庫中額外安裝模塊中每個文件的行數。此外,它還計算在數據庫中直接創建或導入的服務器操作和自定義計算字段的 Python 行。最后,它還計算從導入模塊中的 Javascript、CSS 和 SCSS 文件以及 QWeb 視圖的代碼行數。

默認情況下,某些文件被排除在計數之外:

  • 清單文件( __manifest__.py__openerp__.py

  • 文件夾 static/lib 的內容

  • 在文件夾 testsstatic/tests 中定義的測試

  • migrationsupgrades 文件夾中定義的遷移腳本

  • 在清單文件的 demodemo_xml 部分聲明的XML文件

對于特殊情況,可以針對每個模塊定義應該被 Odoo Cloc 忽略的文件列表。這是在清單的 cloc_exclude 條目中指定的:

"cloc_exclude": [
    "lib/common.py", # exclude a single file
    "data/*.xml",    # exclude all XML files in a specific folder
    "example/**/*",  # exclude all files in a folder hierarchy recursively
    "**/*.scss",     # exclude all scss file from the module
]
模式 `` **/* `` 可以用于忽略整個模塊。這對于排除某個模塊的維護服務成本非常有用。
有關模式語法的更多信息,請參見 glob。

使用 --path 選項?

如果給定文件夾中存在清單文件,則此方法與 –database option 的操作方式相同。否則,它將計算所有文件。

識別額外模塊?

為了區分標準模塊和額外模塊,Odoo Cloc使用以下啟發式方法:位于與“base”、“web”或“web_enterprise”標準模塊相同的父目錄中(在跟隨符號鏈接后的實際文件系統路徑)的模塊被視為標準模塊。其他模塊被視為額外模塊。

錯誤處理?

Odoo Cloc 無法計算某些文件。這些文件將在輸出的末尾報告。

超過最大文件大小限制?

Odoo Cloc 拒絕任何大于 25MB 的文件。通常,源文件小于 1 MB。如果文件被拒絕,可能是以下原因:

  • 一個包含大量數據的生成的 XML 文件。它應該在清單中排除。

  • 應該放置在 static/lib 文件夾中的 JavaScript 庫。

語法錯誤?

Odoo Cloc無法計算Python文件中存在語法問題的代碼行數。如果一個額外的模塊包含這樣的文件,應該修復這些文件以允許模塊加載。如果模塊盡管存在這些文件仍然可以正常工作,則這些文件可能沒有被加載,因此應該從模塊中刪除它們,或者至少通過 cloc_exclude 在清單中排除它們。

TSConfig生成器?

在編寫JavaScript時,有一些方法可以幫助您的編輯器提供強大的自動完成功能。其中一種方法是使用tsconfig.json文件。雖然最初是為TypeScript設計的,但編輯器也可以使用它的信息來處理純JavaScript。使用此配置文件,您現在可以在模塊之間獲得完整的自動完成功能。

生成此文件的命令需要盡可能多的未命名參數。這些是您的插件目錄的相對路徑。在下面的示例中,我們向上移動一個文件夾,將tsconfig文件保存在包含社區和企業的文件夾中。

$ community/odoo-bin tsconfig --addons-path community/addons,community/odoo/addons,enterprise > tsconfig.json