Chương 2: Thiết Lập Môi Trường Phát Triển
Thiết Lập Môi Trường Phát Triển Odoo Mô Đun
Tuỳ thuộc vào mục đích sử dụng, có nhiều cách để cài Odoo. Nếu bạn đang làm quen với bản Odoo community hoặc là nhân viên đang làm việc cho odoo, thì cách thích hợp để cài Odoo là thực hiện cài từ nguồn.
Chuẩn bị môi trường
- Đầu tiên bạn cần tạo một tài khoản Github account. Mình đã có tài khoản này rồi và sử dụng một thời gian khá lâu, chưa làm gì có điểm nhấn lắm. Mục đích quan trọng là để lưu trữ mã nguồn cho dự án của bạn
- Sau đó thêm ssh key https://github.com/settings/keys
- Cài Odoo (có thể sử dụng trực tiếp file tải về, ở đây mình không tải trực tiếp mà dùng
git clone
) Tạo thư mục ví dụ ERP sau đó (Đây là đường dẫn vào /Users/tennguoidung/ERP)
$ git clone [email protected]:odoo/odoo.git
$ git clone [email protected]:odoo/enterprise.git
$ git clone [email protected]:odoo/tutorials.git
Lưu ý để chạy liên tục, tránh tắt màn hình, quá trình tải về sẽ bị gián đoạn.
- Tạo git fork bạn tạo 3 phiên bản, một phiên bản fork của community, một của enterprise và một của tutorials
https://github.com/vntechsolutions/odoo
https://github.com/vntechsolutions/tutorials
Mình không có key vào enterprise nên không fork cái này ra. Thực ra bản này là được xây trên bản community với các add-ons và mô đun.
- Link git with fork
Lệnh dưới đây dùng để nối git với rep fork trên github.
$ cd /CommunityPath (/Users/tennguoidung/ERP/odoo)
$ git remote add dev [email protected]:<vntechsolutions>/odoo.git
Cụ thể cd ERP/tutorials
$ git remote add dev [email protected]:vntechsolutions/tutorials.git
Nếu bạn truy cập vào odoo/enterprice được, thì thiết lập tương tự.
Sửa git global config do lỗi dưới đây. Để sửa file này thì sử dụng vi editor
error: key does not contain a section: clean
error: key does not contain a section: smudge
error: key does not contain a section: process
error: key does not contain a section: required
[core]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
autocrlf = false
[user]
name = Ten Nguoi Dung
email = [email protected]
$ cd /EnterprisePath
$ git remote add dev [email protected]:<your_github_account>/enterprise.git
Chạy server với odoo-bin
cd $HOME/src/odoo/
$HOME = /Users/tennguoidung
$cd /Users/tennguoidung/ERP/odoo
Sau đó
$ ./odoo-bin --addons-path="addons/,../enterprise/,../tutorials" -d rd-demo
Lỗi xuất hiện: AssertionError: Outdated python version detected, Odoo requires Python >= 3.10 to run.
Mình sửa bằng:
brew install python
Sau đó chạy lại thì xuất hiện lỗi
ModuleNotFoundError: No module named 'PyPDF2'
Như vầy cần phải cài thêm gói PyPDF2
python3 -m pip install “PyPDF2” lệnh này không được thì dùng
PEP 668 ([email protected]) và Môi Trường Ảo (Virtual environments)
Từ bản [email protected], Homebrew theo PEP 668.
Nếu bạn mong muốn cài gói Python không được quản lý bởi Brew như PyPI hay PyPDF2.
- Tạo một môi trường ảo sử dụng python3 -m venv path/to/venv. Rồi sử dụng path/to/venv/bin/python và path/to/venv/bin/pip.
- Hoặc sử dụng pipx install xyz, sẽ quản lý môi trường ảo cho bạn. Cài pipx bằng brew install pipx. Khi bạn dùng pipx để cài một ứng dụng Python, nó luôn dùng môi trường ảo cho bạn.
- Cũng có thể cài PyPDF2 bằng brew install PyPDF2. Nhưng cách này không được khuyến khích, mà cài bằng pip bên trong một virtualenv. Hệ thống HomeBrew thường là công thức thể, và tác dụng như là hỗ trợ phụ thuộc cho các công thức khác, nên nó không được khuyến khích phụ thuộc vào chúng.
Dùng lệnh để tạo môi trường ảo
python3 -m venv venv
Sau đó để sử dụng pip thì có thể dùng lệnh sau đây
venv/bin/activate
Lệnh này sẽ lên cấu hình shell hiện tại là môi trường python mặc định.
Và bạn có thể gõ pip bình thường (lưu ý có chữ venv đằng trước chỉ môi trường ảo)
(venv) tennguoidung@NAME-MacBook-Air odoo %
Mình sử dụng cách số 2
Trước hết cài pipx bằng brew install pipx
Sau đó là
pipx install PYPDF2
Nhưng mà lệnh trên cũng không cài được.
“No apps associated with package pypdf2 or its dependencies. If you are attempting to install a library, pipx should not be
used. Consider using pip or a similar tool instead.” - Không có ứng dụng nào liên quan với gói pydpf2 hoặc hỗ trợ phụ thuộc của nó. Nếu bạn đang thử cái một thư viện thì pipx không nên được dùng mà dùng pi nhé.
Sau khi thử khá nhiều thì pip --v vẫn có lỗi zsh: command not found: pip, do vậy mình sẽ dùng pip3, pip3 được cài khi chạy lệnh brew install python.
Cuối cùng thì đây là giải pháp
Lưu ý path/to/venv là đường dẫn tới file bạn có thể nó ngay trong thư mục hiện tại là /Users/tennguoidung/ERP/odoo, và lênh python3 -m venv venv sẽ tạo môi trường ảo ở /Users/tennguoidungERP/odoo/venv.
Chú ý phân biệt khi nào dùng python và python3 nhé và pip hoặc pip3.
- python3 -m venv path/to/venv
path/to/venv/bin/python
hoặc
path/to/venv/bin/pip install -r requirements.txt
Collecting PYPDF2
Using cached pypdf2-3.0.1-py3-none-any.whl.metadata (6.8 kB)
Using cached pypdf2-3.0.1-py3-none-any.whl (232 kB)
Installing collected packages: PYPDF2
Successfully installed PYPDF2-3.0.1
Nhưng bạn không thể cài từng gói như vậy, vì có nhiều gói phải cài tương tự như PYPDF2. Do đó bạn phải sử dụng
pip install -r requirements.txt
Để cài các gói yêu cầu.
Vấn đề là ở đây
Python 3.12.0 to 3.10.13 (using pyenv, by the way)
ERROR: Could not build wheels for greenlet, lxml, reportlab, which is required to install pyproject.toml-based projects
Bây giờ đổi bản python
brew install pyen
Sau đó cài Python 3.10.13
pyenv install 3.10.13
Sau đó là chạy
brew install pyenv-virtualenv
Và tạo môi trường ảo
pyenv virtualenv 3.10.13 python_3.10.13
Kích hoạt bằng
pyenv local python_3.10.13
Sau đó mình có thể sẽ phải tắt đi bằng
pyenv local system
Cài Python 3.10 và chuyển đổi giữa các phiên bản.
brew install [email protected]
cd /Users/tennguoidung/ERP/odoo
python3.10 -m venv --upgrade venv
Sau đó cd venv/bin tạo symlink
ln -sf python3.10 python
ln -sf python3.10 python3
Và bỏ symlink
rm {python,pip}3.12
Chạy ngon VOILA.
pip install -r requirements.txt
(lưu ý đây là sau khi bạn đã chạy môi trường ảo với lệnh . venv/bin/activate
) - Xuất hiện (venv) đằng trước (venv) tennguoidung@NAME-MacBook-Air odoo %
Do không có odoo/enterprise nên phải dùng bản này
./odoo-bin --addons-path="addons/,../tutorials" -d rd-demo
Tiếp đến vào đây login
http://localhost:8069/web/login
Email: admin
Mật khẩu: admin