出于安全考虑,通常生产环境与互联网隔离,因此无法使用 pip install
在线安装 DolphinDB Python API(以下简称 Python API)。本文介绍如何离线安装 Python API 环境,包括 conda 环境和 wheel 安装两种方式。用户可根据生产环境的使用需求、应用场景自行选择。
首先准备构建环境,包括在线环境与离线环境,其中在线环境用于在线收集和构建资源,离线环境用于离线安装与验证。
构建环境需要与目标环境尽可能的一致,包括操作系统版本、CPU 架构、Python 版本等。其中在线环境用于下载并构建各种资源,离线环境用于构建与测试 Python API 的安装包。
推荐使用类似 virtual box 的虚拟化工具来制作环境。假设我们需要在 KyLin v10,x86-64, Python 3.8 的目标环境中安装 Python API,那么需要准备以下环境:
操作系统:KyLin v10
CPU:Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz
主机平台:VirtualBox 6.1
网络:NetWork Bridge
操作系统:KyLin v10
CPU:Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz
主机平台:VirtualBox 6.1
网络:HostOnly
其中 HostOnly(仅主机模式)的网络模式可以保证该机器与互联网无法连接。
Windows 环境可以准备两台机器(可以是 PC),一台用于在线获取资源,并禁用另一台机器的网络进行离线安装测试。有关 Windows 下安装和配置 Conda 环境,详见 Windows 安装。
推荐使用 miniconda,通常生产环境比较复杂,需要虚拟环境以保证隔离性。
Miniconda — conda documentation
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
sh Miniconda3-latest-Linux-x86_64.sh
安装并激活 base 虚拟环境。
source ~/.bashrc
使用 conda env list
验证安装已完成:
分别配置在线、离线环境的 conda:
conda config // 在 ~/目录下会出现文件 .condarc
~/.condarc
文件show_channel_urls: true envs_dirs: - ~/envs pkgs_dirs: - ~/pkgs
conda create -n test38 numpy=1.22.3 pandas python=3.8.13 --download-only
要求 numpy 为 1.18 到 1.22.3 之间的版本,推荐使用 1.22.3 版本。
2. 压缩并上传 package
压缩 .condarc pkgs_dirs
路径下的依赖包,并上传至离线环境的 pkgs 目录。
tar -zcvf pkgs.tar.gz pkgs/
md5sum pkgs.tar.gz > pkgs.tar.gz.md5
(base) root@peter-VirtualBox:~# md5sum -c pkgs.tar.gz.md5
pkgs.tar.gz: 成功
2. 校验完整性通过后,再解压:
tar -zxvf pkgs.tar.gz
3. 创建虚拟环境:
conda create -n offline38 numpy pandas python=3.8.13 --offline
conda activate offline38
1. 下载 whl 包
根据 CPU 架构、操作系统,从官方网站 pypi.org 下载对应的 Python API 安装包。
对应 x86_64, Python3.8 的包:
下载链接
2. pip 离线安装
pip install dolphindb-1.30.19.2-cp38-cp38-manylinux2010_x86_64.whl
3. 验证安装是否成功
(offline38) root@peter-VirtualBox:~# python
Python 3.8.13 (default, Mar 28 2022, 11:38:47)
[GCC 7.5.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import dolphindb as ddb
>>> s = ddb.session()
>>> s
能正常生成 session 就说明已安装成功安装 Python API。
使用 pip wheel 命令收集相关 whl 包:
pip install wheel && pip wheel dolphindb
执行完成后,默认会在当前目录保存相关 whl 包。
(py38) [root@node1 ~]# ls *.whl|sort
dolphindb-1.30.19.2-cp38-cp38-manylinux2010_x86_64.whl
future-0.18.2-py3-none-any.whl
numpy-1.22.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
pandas-1.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
python_dateutil-2.8.2-py2.py3-none-any.whl
pytz-2022.2.1-py2.py3-none-any.whl
six-1.16.0-py2.py3-none-any.whl
pip install *.whl
(py38) root@peter-VirtualBox:~/wpkgs# pip install *.whl
Processing ./dolphindb-1.30.19.2-cp38-cp38-manylinux2010_x86_64.whl
Processing ./future-0.18.2-py3-none-any.whl
Processing ./numpy-1.22.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Processing ./pandas-1.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Processing ./python_dateutil-2.8.2-py2.py3-none-any.whl
Processing ./pytz-2022.2.1-py2.py3-none-any.whl
Processing ./six-1.16.0-py2.py3-none-any.whl
Installing collected packages: pytz, six, numpy, future, python-dateutil, pandas, dolphindb
Successfully installed dolphindb-1.30.19.2 future-0.18.2 numpy-1.22.3 pandas-1.5.0 python-dateutil-2.8.2 pytz-2022.2.1 six-1.16.0
分别验证一下 whl 包和 Python API。
(py38) root@peter-VirtualBox:~/wpkgs# pip list
Package Version
--------------- ---------
certifi 2022.9.14
dolphindb 1.30.19.2
future 0.18.2
numpy 1.22.3
pandas 1.5.0
pip 22.1.2
python-dateutil 2.8.2
pytz 2022.2.1
setuptools 63.4.1
six 1.16.0
wheel 0.37.1
(offline38) root@peter-VirtualBox:~# python
Python 3.8.13 (default, Mar 28 2022, 11:38:47)
[GCC 7.5.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import dolphindb as ddb
>>> s = ddb.session()
>>> s
能正常生成 session 就说明安装成功。
分别在离线环境、在线环境安装并配置好 miniconda 环境。并通过在线环境构建
并上传至离线环境,来完成安装。
注:miniconda 的安装和配置分别在在线环境和离线环境完成,且目录名称须一致。
选择对应 Python 版本的 minicoda,下载 Miniconda3 Windows 64-bit 并安装。安装完成后,将 conda 加入 Windows 命令搜索路径:
此电脑 → 属性 → 查找设置 → 输入: 编辑系统环境变量 → 环境变量 → 系统环境变量
在新建中输入 condabin 目录的完整路径,如:
D:\ProgramData\Miniconda3\condabin
点击确定,新开 cmd 窗口验证
C:\Users\wfhuang>conda -V
conda 4.12.0
设置包路径,如 D:\pkgs
D:\pythonApi>conda config --add pkgs_dirs D:\pkgs
参考 4.2,在在线环境中配置好包路径,并下载 DolphinDB 相关依赖包
conda create -n test38 numpy=1.22.3 future pandas python=3.8.13 --download-only
在设置的 pkgs_dirs 中,会有存放相关依赖包。压缩后,包大小约为 450MB
conda create -n offline38 numpy pandas future python=3.8.13 --offline
conda activate offline38
根据 CPU 架构、操作系统,从官方网站 DolphinDB 下载对应的 Python API 安装包。
对应 Windows, x86_64, Python3.8 的包:
https://files.pythonhosted.org/packages/62/ff/382aff0a2add9ce5c779c14d0d7fbfcec62ab0748b5778731a7fe524c2af/dolphindb-1.30.19.2-cp38-cp38-win_amd64.whl
pip install dolphindb-1.30.19.2-cp38-cp38-win_amd64.whl
import dolphindb as ddb
s = ddb.session()
s.connect("192.168.1.157", 8848, "admin", "123456")
s.run("print(\"Welcome to DolphinDB!\")")
s.close()
D:\pythonApi>python hello_ddb.py
Welcome to DolphinDB!
输出欢迎信息说明安装已经成功。
配置一个与目标环境相同的构建环境。例如目标环境是 x86-64, Windows server 2016, Python 3.8.10,那么可以准备一个 x86-64, Windows 10, Python 3.8.10 的 PC 环境。
收集 Python API 的 wheel 包,并生成清单文件 requirements.txt。
1. pip wheel
使用 wheel 在当前环境构建相关 whl 包,并解决相关依赖。
pip wheel dolphindb -i https://pypi.tuna.tsinghua.edu.cn/simple
使用 -i 可以指定镜像源加速构建,例如中国地区可以选择清华源。执行完成后,默认会在当前目录保存相关 whl 包。
2. pip install
安装 Python API,用于生成依赖清单文件 requirements.txt。
pip install dolphindb -i https://pypi.tuna.tsinghua.edu.cn/simple
3. pip freeze
使用 freeze 解析 Python API 的依赖,并输出至文件 requirements.txt。
pip freeze dolphindb > requirements.txt
上述步骤完成后,目录类似如下(不同版本会有差异)。
将相关 whl 包、requirements.txt 上传至 Python 离线环境,并通过 pip install 安装,
使用 -r
选项从指定的清单文件 requirements.txt
中批量安装 wheel 包。
pip install -r requirements.txt
D:\pythonApi>pip install -r requirements.txt
Processing d:\pythonapi\dolphindb-1.30.19.2-cp38-cp38-win_amd64.whl
Processing d:\pythonapi\numpy-1.22.3-cp38-cp38-win_amd64.whl
Processing d:\pythonapi\pandas-1.5.1-cp38-cp38-win_amd64.whl
Processing d:\pythonapi\python_dateutil-2.8.2-py2.py3-none-any.whl
Processing d:\pythonapi\pytz-2022.6-py2.py3-none-any.whl
Processing d:\pythonapi\six-1.16.0-py2.py3-none-any.whl
Collecting future==0.18.2
Using cached future-0.18.2-py3-none-any.whl
Installing collected packages: six, pytz, python-dateutil, numpy, pandas, future, dolphindb
Successfully installed dolphindb-1.30.19.2 future-0.18.2 numpy-1.22.3 pandas-1.5.1 python-dateutil-2.8.2 pytz-2022.6 six-1.16.0
分别验证下 whl 包和 Python API 。
C:\pythonApi>pip list
Package Version
--------------- ---------
dolphindb 1.30.19.2
future 0.18.2
numpy 1.22.3
pandas 1.5.1
pip 21.1.1
python-dateutil 2.8.2
pytz 2022.6
setuptools 56.0.0
six 1.16.0
import dolphindb as ddb
s = ddb.session()
s.connect("192.168.1.157", 8848, "admin", "123456")
s.run("print(\"Welcome to DolphinDB!\")")
s.close()
D:\pythonApi>python hello_ddb.py
Welcome to DolphinDB!
输出欢迎信息说明安装已经成功。
总体而言,wheel 包安装比较简单快捷,而 conda 安装相对复杂,但是可以构建一个隔离环境。
安装方式 | 优点 | 不足 |
---|---|---|
conda | 提供虚拟环境 | 整个安装包大概在 500M 左右,上传至生产环境比较耗时,且需要校验完整性 |
wheel | 简单快捷,安装包小 | 无法提供虚拟环境,可能与现有的 Python 环境相冲突 |
pip list // 列出当前安装的包
pip freeze packageA // 列出 packageA 的依赖信息
pip wheel packageA // 构建 packageA 的依赖 wheel 包
pip search packageA // 在官方仓库 PyPI 搜索 packageA
conda create -n py38 python=3.8.13 --offline
conda env list //查看所有虚拟环境
conda activate py38 //激活 py38
conda deactivate //退出当前虚拟环境
conda deactivate
conda remove -n offline38 --all
Q: conda 离线安装缺失包
PackagesNotFoundError: The following packages are not available from current channels:
- pandas
- python=3.8.13
- numpy
A: 检查下 pkgs_dirs
是否设置正确,以及在该目录下是否有提示信息中的包。不能有任何中间目录,例如设置 conda 的包目录为 pkgs,那么 pkgs/pkgs/numpy 是无法被 conda 找到的。
Q: wheel 包未安装
error: invalid command 'bdist_wheel'
A: 使用 pip 安装 wheel
pip install wheel
Q: future 包缺失
Failed to build future
ERROR: Failed to build one or more wheels
WARNING: Ignoring invalid distribution -ip (d:\program files\python3.7\lib\site-packages)
A: 可以手动收集下 future 包,并上传至离线环境。
pip wheel future
Q: 构建 future whl 包失败
Failed to build future
ERROR: Failed to build one or more wheels
WARNING: Ignoring invalid distribution -ip (d:\program files\python3.7\lib\site-packages)
A: 因 pip 下载、安装未成功而导致的环境异常,进入 pip --version
输出信息中的 site-packages/pip 目录,删除~开头的一些临时文件。
(base) [root@node1 ~]# pip --version
pip 21.2.4 from /root/miniconda3/lib/python3.9/site-packages/pip (python 3.9)
Q: Python API 安装失败
ERROR: Could not find a version that satisfies the requirement dolphindb (from versions: none)
A: 安装环境与 whl 包不匹配导致。可以按如下步骤处理:
pip debug --verbose