python - 如何将 Odoo 环境加载到 Jupyter Notebook 中?
问题描述
奥多 (ERP)
Odoo是一款一体化管理软件,提供一系列业务应用程序,形成一整套面向各种规模公司的企业管理应用程序。Odoo 是一款一体化的商业软件,包括 CRM、网站/电子商务、计费、会计、制造、仓库和项目管理以及库存。
社区版是开源版本,而企业版则为社区版补充了商业功能和服务。
终端
通常我会启动一个 Python 终端,并像这样加载 Odoo 环境:
/odoo_path/odoo-bin --addons-path=/addons_path shell --config=/config_path/.odoo.conf -d database_name
在控制台内我可以调用self
,并且环境变量可用(self.env
)。我可以在连接的数据库上运行一些命令。如果我想做一些快速测试,这非常有用。但是如果我想运行一些小脚本或测试一些代码片段,那就有点不方便了。Jupyter Notebooks 和 Jupyter Lab是非常好的工具。
木星
Jupyter是一个为编程、数学和数据科学生成基于浏览器的交互式环境的项目。它通过插件(“内核”)支持多种语言,例如 Python、Ruby、Haskell、R、Scala 和 Julia。
Jupyter Notebook是传统且最稳定的应用程序。JupyterLab有一个新的界面,更适合处理由多个文件组成的大型项目。截至 2018 年 2 月,JupyterLab 处于测试阶段。
要求
我想要实现的是将 Odoo 环境加载到 Jupyter Notebook 并使用这些代码片段而不是简单的 Python 终端。
所以我想知道是否有人知道这是否可行或者哪个是一个不错的起点。有更好的选择吗?这是一个愚蠢的想法吗?
解决方案
步骤 1. 在你的 odoo 环境中安装 jupyter pip install jupyter
步骤 2. 启动 odoo shell 并从 python 提示符打开 jupyter
>>
from notebook.notebookapp import NotebookApp
import tornado.ioloop
app = NotebookApp()
app.initialize(["--ip=0.0.0.0"])
tornado.ioloop.IOLoop.current().start()
步骤 3. 通过向 python 控制台发送 CTRL+C 来获取令牌
你看到类似的东西
http://(<hostname> or 127.0.0.1):8888/?token=9d150bd69e908df9a5e30157b530624536fe0c84d8804f17
第 4 步。打开您的浏览器
http://localhost:8888/?token=9d150bd69e908df9a5e30157b530624536fe0c84d8804f17
现在您在 Jupyter 控制台或 Web 界面中
要连接到odoo,您需要设置系统路径,然后连接
import sys
sys.path[0:0] = [
'/vagrant/odoo/py3o.template',
'/vagrant/odoo/openupgradelib',
'/vagrant/odoo/anybox.recipe.odoo',
'/vagrant/odoo/pyusb',
'/vagrant/odoo/parts/odoo',
'/vagrant/odoo/eggs/gevent-1.1.2-py2.7-linux-x86_64.egg',
'/vagrant/odoo/eggs/Unidecode-1.1.1-py2.7.egg',
'/vagrant/odoo/eggs/py3o.formats-0.3-py2.7.egg',
'/vagrant/odoo/eggs/isoweek-1.3.3-py2.7.egg',
'/vagrant/odoo/eggs/PyPDF2-1.26.0-py2.7.egg',
'/vagrant/odoo/eggs/simplejson-3.17.2-py2.7-linux-x86_64.egg',
'/vagrant/odoo/eggs/xlrd-1.2.0-py2.7.egg',
'/vagrant/odoo/eggs/openpyxl-2.4.9-py2.7.egg',
'/vagrant/odoo/eggs/vcrpy-3.0.0-py2.7.egg',
'/vagrant/odoo/eggs/py2_ipaddress-3.4.2-py2.7.egg',
'/vagrant/odoo/eggs/Babel-2.8.0-py2.7.egg',
'/vagrant/odoo/eggs/decorator-4.4.2-py2.7.egg',
'/vagrant/odoo/eggs/docutils-0.16-py2.7.egg',
'/vagrant/odoo/eggs/feedparser-5.2.1-py2.7.egg',
'/vagrant/odoo/eggs/Jinja2-2.10.1-py2.7.egg',
'/vagrant/odoo/eggs/lxml-4.5.2-py2.7-linux-x86_64.egg',
'/vagrant/odoo/eggs/Mako-1.1.3-py2.7.egg',
'/vagrant/odoo/eggs/mock-2.0.0-py2.7.egg',
'/vagrant/odoo/eggs/ofxparse-0.20-py2.7.egg',
'/vagrant/odoo/eggs/passlib-1.7.4-py2.7.egg',
'/vagrant/odoo/eggs/Pillow-4.1.1-py2.7-linux-x86_64.egg',
'/vagrant/odoo/eggs/psutil-2.2.1-py2.7-linux-x86_64.egg',
'/vagrant/odoo/eggs/psycogreen-1.0.2-py2.7.egg',
'/vagrant/odoo/eggs/psycopg2-2.8.6-py2.7-linux-x86_64.egg',
'/vagrant/odoo/eggs/Python_Chart-1.39-py2.7.egg',
'/vagrant/odoo/eggs/pydot-1.4.1-py2.7.egg',
'/vagrant/odoo/eggs/pyparsing-2.4.7-py2.7.egg',
'/vagrant/odoo/eggs/pyPdf-1.13-py2.7.egg',
'/vagrant/odoo/eggs/pyserial-3.4-py2.7.egg',
'/vagrant/odoo/eggs/python_dateutil-2.8.1-py2.7.egg',
'/vagrant/odoo/eggs/python_ldap-3.3.1-py2.7-linux-x86_64.egg',
'/vagrant/odoo/eggs/python_openid-2.2.5-py2.7.egg',
'/vagrant/odoo/eggs/pytz-2020.1-py2.7.egg',
'/vagrant/odoo/eggs/PyYAML-5.3.1-py2.7-linux-x86_64.egg',
'/vagrant/odoo/eggs/qrcode-6.1-py2.7.egg',
'/vagrant/odoo/eggs/reportlab-2.7-py2.7-linux-x86_64.egg',
'/vagrant/odoo/eggs/requests-2.24.0-py2.7.egg',
'/vagrant/odoo/eggs/suds_jurko-0.6-py2.7.egg',
'/vagrant/odoo/eggs/vatnumber-1.2-py2.7.egg',
'/vagrant/odoo/eggs/vobject-0.9.6.1-py2.7.egg',
'/vagrant/odoo/eggs/Werkzeug-0.11.11-py2.7.egg',
'/vagrant/odoo/eggs/XlsxWriter-1.3.6-py2.7.egg',
'/vagrant/odoo/eggs/xlwt-1.3.0-py2.7.egg',
'/vagrant/odoo/eggs/python_stdnum-1.14-py2.7.egg',
'/vagrant/odoo/eggs/urllib3-1.25.10-py2.7.egg',
'/vagrant/odoo/eggs/idna-2.10-py2.7.egg',
'/vagrant/odoo/eggs/chardet-3.0.4-py2.7.egg',
'/vagrant/odoo/eggs/certifi-2020.6.20-py2.7.egg',
'/vagrant/odoo/eggs/six-1.15.0-py2.7.egg',
'/vagrant/odoo/eggs/pyasn1_modules-0.2.8-py2.7.egg',
'/vagrant/odoo/eggs/pyasn1-0.4.8-py2.7.egg',
'/vagrant/odoo/eggs/olefile-0.46-py2.7.egg',
'/vagrant/odoo/eggs/beautifulsoup4-4.9.3-py2.7.egg',
'/vagrant/odoo/eggs/pbr-5.5.0-py2.7.egg',
'/vagrant/odoo/eggs/funcsigs-1.0.2-py2.7.egg',
'/vagrant/odoo/eggs/MarkupSafe-1.1.1-py2.7-linux-x86_64.egg',
'/vagrant/odoo/eggs/greenlet-0.4.17-py2.7-linux-x86_64.egg',
'/vagrant/odoo/eggs/zc.recipe.egg-2.0.7-py2.7.egg',
'/vagrant/odoo/eggs/wrapt-1.12.1-py2.7-linux-x86_64.egg',
'/vagrant/odoo/eggs/contextlib2-0.6.0.post1-py2.7.egg',
'/vagrant/odoo/eggs/et_xmlfile-1.0.1-py2.7.egg',
'/vagrant/odoo/eggs/jdcal-1.4.1-py2.7.egg',
'/vagrant/odoo/eggs/pyjon.utils-0.7-py2.7.egg',
'/vagrant/odoo/eggs/Genshi-0.7.3-py2.7-linux-x86_64.egg',
'/vagrant/odoo/eggs/cssselect-1.1.0-py2.7.egg',
'/vagrant/odoo/eggs/soupsieve-1.9.5-py2.7.egg',
'/vagrant/odoo/eggs/backports.functools_lru_cache-1.6.1-py2.7.egg',
'/home/vagrant/venv/lib/python2.7/site-packages',
]
from anybox.recipe.odoo.runtime.session import Session
%%capture
session = Session('/vagrant/odoo/etc/odoo.cfg', '/vagrant/odoo')
%%capture
session.open(db='odootest')
User = session.env['res.users']
user = User.browse(1)
print(user.name)
Administrator
推荐阅读
- jhipster - JHipster 嵌套组件
- c# - 我正在寻找检测 TabItem 将被更改并且 TabItem 被初始化的事件
- javascript - 单击后尝试更改单元格图像,单击后不会更改
- linux - Docker:安装/共享单个 sock 文件?
- java - 如何将字节 [] 类型的对象转换为字符串
- cakephp - CakePHP 4:简单的 JSON 视图返回
- api - bitbucket 注释中缺少状态更改
- wordpress - 将 www 重定向到无 www
- excel - 使用特定工作簿时关闭 Excel 的 VBA 脚本
- sql - SQL:在已分组的 TABLE 上使用 CASE