摘要:安裝好后,在中執(zhí)行查看版本信息,應(yīng)該會(huì)看到輸出如下信息版本號(hào)可能會(huì)不同如果提示未找到,則需要手動(dòng)將用戶基礎(chǔ)目錄下的添加到中。相關(guān)文章基礎(chǔ)教程系列第篇開天坑啦
之前說好的 「Odoo 基礎(chǔ)教程系列」終于來了(撒花)~剛過完年重新投入到工作中,一下子事情有點(diǎn)多都要忙不過來了,只能在每天晚上下班回家之后慢慢填坑,各位小伙伴久等了!
在開始之前,這里要先跟大家知會(huì)一聲,在這篇教程以及后面的教程中,都將默認(rèn)開發(fā)環(huán)境是 macOS 或 Ubuntu,因?yàn)樵?Windows 中開發(fā)總是能遇到未知的坑,處理起來往往很是耗費(fèi)時(shí)間精力,這里不去爭(zhēng)論系統(tǒng)的優(yōu)劣,如果沒有 Windows 外的其他系統(tǒng)的小伙伴,但是又想學(xué)習(xí)本教程的內(nèi)容,推薦你們使用虛擬機(jī)安裝一個(gè) Ubuntu 作為開發(fā)環(huán)境 :)
OK,下面正式開始本系列教程的第一篇內(nèi)容。
基本準(zhǔn)備在開始干活前,首先要把工具給準(zhǔn)備好,那我們進(jìn)行 Odoo 開發(fā),需要有哪些工具呢?下面就把最最基礎(chǔ)的羅列出來:
Python 3.5+
PostgreSQL
Node.js
LESS
Git
安裝 Python3首先當(dāng)然少不了 Python 啦,在 Odoo 10.0 版本之前,使用的都是 Python 2,在 11.0 開始,官方就推薦使用 Python 3.5+,當(dāng)然使用 Python 3 也是大勢(shì)所趨,大膽地切換到 3 吧!
如果你當(dāng)前使用的系統(tǒng)沒有安裝 Python 3.5+,你可以按照下面的步驟輕松完成安裝:
# 如果你使用的是 Mac brew install python3 # Ubuntu 用戶 sudo apt-get update sudo apt-get install python3安裝 PostgreSQL
然后是強(qiáng)大的數(shù)據(jù)庫(kù) PostgreSQL,這個(gè)數(shù)據(jù)庫(kù)是 Odoo 官方欽定使用的,不能像 Django 那樣可以根據(jù)喜好用各種庫(kù)。Mac 用戶可以選擇通過官網(wǎng)下載 APP 并跟隨步驟進(jìn)行安裝或者使用 Homebrew 進(jìn)行安裝并啟動(dòng):
brew install postgresql brew services start postgresql
如果你是 Ubuntu 用戶,則可以通過以下命令進(jìn)行安裝:
sudo apt-get update sudo apt-get install postgresql postgresql-contrib
然后執(zhí)行 psql -V 查看版本號(hào),如果沒有錯(cuò)誤并且輸出了版本號(hào),則說明已經(jīng)成功安裝并啟動(dòng),如果出現(xiàn)以下錯(cuò)誤信息:
psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
可以參考 stackoverflow 上的這個(gè)回答進(jìn)行除錯(cuò)。
安裝完畢之后,我們先創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)的超級(jí)用戶,在之后運(yùn)行 Odoo 初始化數(shù)據(jù)庫(kù)的時(shí)候?qū)?huì)用上:
sudo createuser --superuser username安裝 Node.js 和 LESS
Odoo 中有很多的樣式文件是使用 LESS 寫的,在運(yùn)行的時(shí)候 Odoo 會(huì)將這些樣式文件轉(zhuǎn)換成 CSS 文件,具體細(xì)節(jié)我們不必深究。我們需要先安裝好 Node.js 后才能安裝 LESS,繼續(xù)跟著步驟把它們安裝好。
Ubuntu 13.10 及之前的版本需要手動(dòng)安裝 Node.js:
wget -qO- https://deb.nodesource.com/setup | bash - sudo apt-get install -y nodejs
Mac用戶直接使用 Homebrew 進(jìn)行安裝:
brew install node
安裝好 Node.js 之后接著安裝 LESS:
sudo npm install -g less
就是這么簡(jiǎn)單,我們已經(jīng)把 Node.js 和 LESS 都安裝好了,如果感興趣的話,可以去官網(wǎng)了解一下:
Node.js 官網(wǎng)
LESS 官網(wǎng)
安裝 GitGit 是個(gè)非常好用的版本管理工具,日常工作已經(jīng)離不開它了 :) 在大部分系統(tǒng)中都已經(jīng)預(yù)裝好了,如果不知道當(dāng)前系統(tǒng)中有沒有預(yù)裝 git,不妨在終端里輸入 git --version 查看一下,如果提示未找到命令,則需要手動(dòng)安裝,過程同樣十分簡(jiǎn)單:
# Ubuntu sudo apt-get update sudo apt-get install git # Mac brew install git
完美!到這里我們已經(jīng)把目前所需要的工具都準(zhǔn)備好了,這才只是個(gè)開始,不過別擔(dān)心,接下來也不會(huì)很難。
依賴管理器熟悉 Python 開發(fā)的小伙伴應(yīng)該都了解或者使用過各種虛擬環(huán)境,如 virtualenv 和 virtualenvwrapper 等,在這系列的教程中,我們將用 Pipenv 來創(chuàng)建和管理項(xiàng)目的虛擬環(huán)境和依賴包。
如果你還沒了解過 Pipenv,那下面就來簡(jiǎn)單了解一下。Pipenv 是 Python 項(xiàng)目的依賴管理器,類似于 Node.js 的 npm 和 yarn 等。它會(huì)自動(dòng)為項(xiàng)目創(chuàng)建和管理一個(gè)虛擬環(huán)境,當(dāng)你添加或刪除包時(shí),它也會(huì)自動(dòng)地在 Pipfile 中添加或刪除對(duì)應(yīng)的包信息。
在終端執(zhí)行以下命令進(jìn)行安裝:
pip install --user pipenv
選項(xiàng) --user 表示安裝在用戶目錄下,這樣做可以防止破壞任何系統(tǒng)范圍的包。安裝好后,在 Shell 中執(zhí)行 pipenv --version 查看版本信息,應(yīng)該會(huì)看到輸出如下信息(版本號(hào)可能會(huì)不同):
pipenv, version 10.0.0
如果提示未找到 pipenv,則需要手動(dòng)將用戶基礎(chǔ)目錄下的 /bin 添加到 PATH 中。使用 python -m site --user-base 找到用戶基礎(chǔ)目錄的路徑,然后執(zhí)行:
export PATH="/Users/name/Library/Python/3.6/bin:$PATH"
記得將 /bin:$PATH 前的路徑替換為你找到的路徑。
注:如果你使用的是 Zsh,編輯 ~/.zshrc 并將 export PATH=/Users/name/Library/Python/3.6/bin:$PATH 添加到文件底部,不要忘了替換路徑 :)
再次執(zhí)行 pipenv --version ,此時(shí)應(yīng)該可以成功查看到版本信息了。
獲取 Odoo 源碼Odoo 有兩個(gè)版本,一個(gè)是社區(qū)版,一個(gè)是企業(yè)版,社區(qū)版是開源免費(fèi)的,企業(yè)版當(dāng)然是相應(yīng)需要收費(fèi)的,兩個(gè)版本會(huì)有一些差異,但是這些問題不大,我們拉取官方倉(cāng)庫(kù)的社區(qū)版源碼:
git clone [https://github.com/odoo/odoo.git](https://github.com/odoo/odoo.git) -b 11.0 --depth=1
因?yàn)楸娝苤木W(wǎng)絡(luò)問題可能速度會(huì)比較慢,耐心等待拉取完成后,進(jìn)入源碼目錄 cd odoo,可以看到第一層目錄結(jié)構(gòu)如下:
$ tree -L 1 . ├── CONTRIBUTING.md ├── COPYRIGHT ├── LICENSE ├── MANIFEST.in ├── Makefile ├── README.md ├── addons ├── debian ├── doc ├── odoo ├── odoo-bin ├── requirements.txt ├── setup ├── setup.cfg └── setup.py
很好,已經(jīng)萬事俱備了,還差一點(diǎn)我們就可以成功運(yùn)行 Odoo 了,事不宜遲,繼續(xù)我們的教程。
安裝依賴編輯文件 requirements.txt,刪除最后一行的 pypiwin32 ; sys_platform == "win32" 并保存(如果你的開發(fā)環(huán)境是 Windows,你應(yīng)該刪除的是帶有 sys_platform != "win32" 的行),然后創(chuàng)建虛擬環(huán)境(使用 Python 3)并安裝相關(guān)依賴:
pipenv install --three
選項(xiàng) --three 用于指定初始化環(huán)境所使用的 Python 的版本為 Python3,如果你在其他項(xiàng)目中需要使用 Python2 初始化環(huán)境,可以將該選項(xiàng)指定為 --two。
因?yàn)槟夸浵麓嬖谖募?requirements.txt,故 pipenv 會(huì)將其轉(zhuǎn)換成 Pipfile,并且會(huì)自動(dòng)安裝里面列出的所有依賴。在經(jīng)過可能有一點(diǎn)點(diǎn)漫長(zhǎng)的等待之后,終于安裝完畢啦!此時(shí)應(yīng)該會(huì)看到這樣的提示信息:
To activate this project"s virtualenv, run the following: $ pipenv shell
來試試看執(zhí)行 pipenv shell 激活虛擬環(huán)境,然后運(yùn)行 python,嘗試導(dǎo)入幾個(gè)包看看依賴包是否已經(jīng)成功安裝:
>>> import jinja2 >>> import lxml >>> import qrcode
如果沒有報(bào)錯(cuò),就說明我們的環(huán)境已經(jīng)準(zhǔn)備好了,接下來我們要嘗試運(yùn)行 Odoo 的服務(wù)了,緊不緊張,刺不刺激,繼續(xù)下一步吧!
運(yùn)行 Odoo先創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),用于 Odoo 初始化數(shù)據(jù)使用:
createdb demo -U username
還記得前面我們創(chuàng)建了一個(gè)超級(jí)用戶嗎?請(qǐng)不要忘記把命令里的 username 替換成你創(chuàng)建的那個(gè)用戶名哦 XD
在 Odoo 根目錄下執(zhí)行以下命令運(yùn)行 Odoo 服務(wù):
./odoo-bin --addons-path=addons --db-filter=^demo$ -d demo
這里解釋一下上面這條命令里各個(gè)選項(xiàng)的意義:
--addons-path 指定要加載的模塊目錄
--db-filter 用于強(qiáng)制指定使用的數(shù)據(jù)庫(kù),支持正則表達(dá)式,這個(gè)選項(xiàng)的具體用途我們?cè)诤竺嫔婕暗降脑挄?huì)再次講解,現(xiàn)在不理解也沒關(guān)系
-d 用于指定使用的數(shù)據(jù)庫(kù)
命令里的 demo 就是我們前面創(chuàng)建的數(shù)據(jù)庫(kù)的名稱,如果你不是用的這個(gè)名稱,記得替換成你創(chuàng)建的數(shù)據(jù)庫(kù)名。
在一個(gè)新的數(shù)據(jù)庫(kù)中初次運(yùn)行 Odoo,它將會(huì)進(jìn)行初始化,這里需要稍微等待一小會(huì)兒,當(dāng)你看到以下字樣時(shí),就說明 Odoo 的服務(wù)已經(jīng)成功運(yùn)行并可以訪問了:
2018-02-28 12:34:51,398 1561 INFO demo odoo.modules.loading: Modules loaded.
現(xiàn)在可以打開瀏覽器,訪問 http://localhost:8069/ 這個(gè)地址,如果可以看到登錄界面,恭喜你,你已經(jīng)成功搭建好了運(yùn)行環(huán)境了!
輸入帳號(hào)和密碼(默認(rèn)是 admin)登錄,就會(huì)跳轉(zhuǎn)到后臺(tái)界面,現(xiàn)在暫時(shí)什么都沒有,默認(rèn)打開的是 Apps 應(yīng)用安裝模塊的頁(yè)面,就是文章開頭所展示的那張圖片里的那個(gè)界面,這里看到的這些都是 Odoo 自帶的一些基礎(chǔ)應(yīng)用,你可以隨便裝幾個(gè)應(yīng)用,如 Blogs 和 Live Chat 等試試看 :)
瞎說幾句這個(gè)系列第一篇正式的教程,就到這里了,如果遇到什么問題盡管在評(píng)論中提出來,我會(huì)盡量協(xié)助大家解決的。礙于 996 的上班時(shí)間,接下來的教程更新可能會(huì)有點(diǎn)慢,希望各位小伙伴可以耐心等待 :)
然后就是,開了個(gè)微信群,方便交流,雖然貌似好像并沒有什么人愿意加進(jìn)來?加好友時(shí)備注加群,接受后會(huì)拉進(jìn)群內(nèi)。
相關(guān)文章「Odoo 基礎(chǔ)教程系列」第〇篇——開天坑啦
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44561.html
摘要:而模塊化則是區(qū)別于大多數(shù)傳統(tǒng)的最強(qiáng)特性,基于這一特性,開發(fā)人員可以輕松地繼承和擴(kuò)展任何現(xiàn)有的模塊,可以輕松地針對(duì)不同的需求進(jìn)行功能定制。相關(guān)文章基礎(chǔ)教程系列第一篇環(huán)境準(zhǔn)備 showImg(https://segmentfault.com/img/remote/1460000013290099?w=1280&h=856); 大家新年好!給大伙拜個(gè)早年,今天也是情人節(jié)呢,這么好的日子,卻一...
摘要:雖然這是個(gè)很簡(jiǎn)單的應(yīng)用,但是希望大家可以動(dòng)手一起操作,從最簡(jiǎn)單的開始上手學(xué)習(xí)如何使用這個(gè)框架。則是在和之間,負(fù)責(zé)響應(yīng)用戶操作,從中獲取數(shù)據(jù)進(jìn)行處理并返回到中。 showImg(https://segmentfault.com/img/bV66tE?w=728&h=410); 在第一篇教程發(fā)布之后差不多一個(gè)月的今天,終于完成了第二篇內(nèi)容,這個(gè)發(fā)布周期拖得實(shí)在是有點(diǎn)太長(zhǎng)了,我都覺得不好意思...
摘要:今天這個(gè)系列教程即將迎來它的最后一篇內(nèi)容了,我們將要來學(xué)習(xí)中權(quán)限相關(guān)的內(nèi)容。在的權(quán)限管理體系中,同樣也有用戶組這一概念的存在,和其他框架如可以說大同小異。通常和權(quán)限相關(guān)的內(nèi)容,我們都會(huì)在模塊的目錄下進(jìn)行定義,記錄集規(guī)則的定義自然也不例外。 在今年的情人節(jié)(2018.02.14)那天,我寫了一篇博客說即將要開一個(gè)坑,也就是大家在看的這個(gè)系列的教程。今天這個(gè)系列教程即將迎來它的最后一篇內(nèi)容...
摘要:現(xiàn)在我們來給待辦事項(xiàng)增加一個(gè)緊急程度的字段,用來表示當(dāng)前任務(wù)的優(yōu)先級(jí)。此處我們還給這個(gè)字段添加了默認(rèn)值,表示當(dāng)一個(gè)待辦事項(xiàng)被創(chuàng)建后,如果沒有指定緊急程度,將默認(rèn)是待辦狀態(tài)。這篇教程中的代碼同樣會(huì)更新在我的倉(cāng)庫(kù)中。 showImg(https://segmentfault.com/img/bVbfv3E?w=1330&h=912); 在這篇教程里我們將會(huì)了解到 Odoo 模型里的一些其他...
摘要:一般情況下都是在中繼承后在其末尾添加相關(guān)資源路徑除了資源需要引入外,我們編寫的頁(yè)面模板也許要引入,打開并在底部添加我們的自定義頁(yè)面文件大功告成,一個(gè)最簡(jiǎn)單的自定義頁(yè)面已經(jīng)完成了,安裝模塊然后運(yùn)行看看效果吧。 前些天群里的小伙伴問了些關(guān)于在 Odoo 管理后臺(tái)自定義頁(yè)面和 Widget 的問題,那我就來寫一篇簡(jiǎn)短的內(nèi)容,教大家如何創(chuàng)建自定義頁(yè)面并引用第三方庫(kù)。如果大家有看我之前寫的基礎(chǔ)教...
閱讀 1857·2021-11-22 15:25
閱讀 3950·2021-11-17 09:33
閱讀 2523·2021-10-12 10:12
閱讀 1811·2021-10-09 09:44
閱讀 3241·2021-10-08 10:04
閱讀 1325·2021-09-29 09:35
閱讀 1959·2019-08-30 12:57
閱讀 1312·2019-08-29 16:22