对于刚接触 Linux下 Python开发的新手来说,环境搭建是第一道坎——尤其涉及达梦数据库(DM)与 Python联动时,版本兼容、依赖缺失、环境变量配置等问题很容易让人卡壳。
本文结合实际操作场景,整理了一套从 Python安装、达梦环境配置到 dmPython驱动编译的完整流程,每一步都附详细命令和报错解决方案,新手可直接跟着操作,全程无冗余,专注解决“安装成功但用不了”的核心痛点。
📋 前期环境准备(必看)
搭建前先确认软件版本兼容性,避免因版本不匹配返工,以下是最低要求(推荐用更高版本,稳定性更佳):
| | |
|---|
| | Python |
Python | | 本文以 3.12.13为例(适配多数 Linux 系统) |
dmPython | | Python |
🗄️ 达梦数据库环境配置(核心步骤)
达梦数据库安装完成后,需先配置环境变量,让系统识别达梦的命令和依赖库(本文以麒麟V11系统为例,Ubuntu替换 yum为 apt即可)。
当前路径
- • 达梦安装目录:
/home/dmdba/dmdbms(替换为你的实际安装目录)
配置步骤
- 1. 编辑用户环境变量文件(仅当前用户生效,推荐新手):
[dmdba@localhost ~]$ vi ~/.bash_profile
- 2. 在文件末尾添加以下 3 行(直接复制粘贴,替换目录为你的达梦路径):
# 达梦数据库安装目录
export DM_HOME="/home/dmdba/dmdbms"
# 达梦命令加入系统路径
export PATH=$PATH:$DM_HOME/bin
# 配置达梦依赖库路径(驱动编译必需)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/drivers/dpi:$DM_HOME/bin
[dmdba@localhost ~]$ source ~/.bash_profile
[dmdba@localhost ~]$ echo $DM_HOME
输出 /home/dmdba/dmdbms即配置生效。
🐍 Python 3.12 安装(Linux 详细版)
Linux系统自带的 Python版本通常较低(如 3.11),需手动安装 3.12+ 版本,以下是完整步骤:
1. 下载 Python 源码包
打开浏览器访问Python 源码下载地址,选择适合 Unix/Linux的源码压缩包;若服务器可直接联网,也可直接在 Linux 终端执行命令下载(无需浏览器操作,更便捷),命令如下:


服务器可联网直接执行命令下载(无需浏览器):
[dmdba@localhost ~]$ wget https://www.python.org/ftp/python/3.12.13/Python-3.12.13.tar.xz

- • 若提示
wget: 未找到命令,先安装 wget:yum install wget -y
2. 解压源码包
.tar.xz格式需用 -J参数解压,推荐解压到 /usr/local/src目录(便于后续管理):
[dmdba@localhost ~]$ tar -Jxvf Python-3.12.13.tar.xz -C /usr/local/src
3. 编译安装(指定路径,避免冲突)
[dmdba@localhost ~]$ cd /usr/local/src/Python-3.12.13
- 2. 配置编译参数(指定安装路径,启用 SSL 支持):
[root@localhost Python-3.12.13]# ./configure --prefix=/usr/local/python3.12 --with-openssl=/usr
- 若报错 `no acceptable C compiler found`,先安装 gcc:`yum install gcc -y`
- 3. 编译并安装(耗时 5-10 分钟,耐心等待):
[root@localhost Python-3.12.13]# make && make install
- 若编译报错“依赖缺失”,先安装依赖:
yum install -y zlib-devel openssl-devel libffi-devel
4. 配置 Python 环境变量
[root@localhost ~]$ vi /root/.bash_profile
export PATH=/usr/local/python3.12/bin:$PATH
[root@localhost ~]$ source /root/.bash_profile
# 验证版本
[root@localhost ~]$ python3 -V
输出 Python 3.12.13即安装成功。
🚀 dmPython 驱动编译安装(两种方法)
dmPython是 Python连接达梦的核心驱动,达梦数据库已自带驱动包,无需额外下载,推荐用方法一安装。
前提:安装编译工具 gcc
[root@localhost ~]$ yum install gcc -y
方法一:使用达梦自带驱动包(推荐新手)
- 1. 切换到 dmPython 驱动目录(达梦安装目录下):
[dmdba@localhost ~]$ cd /home/dmdba/dmdbms/drivers/python/dmPython
- 2. 确认目录下有
setup.py(驱动安装核心文件):
[dmdba@localhost dmPython]$ ls
正常会显示 Buffer.c、setup.py、README.txt等文件。
- 3. 执行安装命令(指定 Python 3.12 路径):
[root@localhost dmPython]$ /usr/local/python3.12/bin/python3.12 setup.py install
- 4. 安装成功标志:
输出末尾出现 dmPython==2.5.30(版本号可能不同),且无 error提示。
方法二:源码编译安装(备用)
若自带驱动包安装失败,可从达梦官方获取 dmPython源码压缩包,解压后执行:
[root@localhost ~]$ unzip python-dmPython-src.zip
[root@localhost ~]$ cd python-dmPython-src/dmPython
[root@localhost dmPython]$ /usr/local/python3.12/bin/python3.12 setup.py install
✅ 驱动安装验证(3 种方法)
安装完成后,务必验证驱动是否可用,避免后续连接数据库时报错。
方法一:Python 交互式验证
[root@localhost ~]$ /usr/local/python3.12/bin/python3.12
>>> import dmPython # 无报错即导入成功
>>> dmPython.version # 查看驱动版本
'2.5.30'
>>> exit() # 退出交互式界面
方法二:命令行快速验证
[root@localhost ~]$ /usr/local/python3.12/bin/python3.12 -c "import dmPython; print('驱动版本:', dmPython.version)"
输出 驱动版本:2.5.30即成功。
方法三:检查库依赖(避免运行时找不到达梦库)
# 找到 dmPython 驱动文件
[root@localhost ~]$ DM_PYTHON_SO=$(find /usr/local/python3.12/lib/python3.12/site-packages/ -name "dmPython*.so")
# 检查依赖库
[root@localhost ~]$ ldd $DM_PYTHON_SO | grep dmdpi
输出 libdmdpi.so => /home/dmdba/dmdbms/drivers/dpi/libdmdpi.so即依赖正常。
📝 实战:Python 连接达梦查询数据
验证驱动可用后,编写脚本连接达梦数据库,查询 CS.EMPL表前 5 条数据(适配你的数据库信息)。
完整查询脚本
#!/usr/local/python3.12/bin/python3.12
# -*- coding: utf-8 -*-
"""
Python 连接达梦数据库示例
数据库信息:
- IP: 192.168.25.173
- 端口: 5236
- 用户: CS
- 密码: Dmdrs123456
- 查询表: CS.EMPL(前 5 条数据)
"""
import dmPython
import traceback
def query_dm_data():
# 数据库连接参数
db_config = {
"user": "CS",
"password": "Dmdrs123456",
"server": "192.168.25.173",
"port": 5236
}
# 查询 SQL(查询所有字段,限制前 5 条)
sql = "SELECT * FROM \"CS\".\"EMPL\" LIMIT 5;"
conn = None
cursor = None
try:
# 建立连接
print("正在连接达梦数据库...")
conn = dmPython.connect(**db_config)
print("连接成功!")
# 执行查询
cursor = conn.cursor()
cursor.execute(sql)
# 获取结果(表头 + 数据)
columns = [desc[0] for desc in cursor.description]
rows = cursor.fetchall()
# 格式化输出
print("\n===== 查询结果(前 5 条)=====")
print("\t".join(columns))
print("-" * 150)
if rows:
for row in rows:
formatted_row = [str(item) if item is not None else "NULL" for item in row]
print("\t".join(formatted_row))
print(f"\n共返回 {len(rows)} 条数据")
else:
print("表中无数据")
except dmPython.Error as e:
print(f"\n数据库异常:{e}")
traceback.print_exc()
except Exception as e:
print(f"\n脚本异常:{e}")
traceback.print_exc()
finally:
# 释放资源
if cursor:
cursor.close()
if conn:
conn.close()
print("\n连接已关闭")
if __name__ == "__main__":
query_dm_data()
运行脚本
- 1. 保存脚本为
query_dm.py,添加执行权限:
vi /home/dmdba/query_dm_employee.py
# 给脚本添加执行权限(可选)
chmod +x /home/dmdba/query_dm_employee.py
[dmdba@localhost ~]$ /usr/local/python3.12/bin/python3.12 /home/dmdba/query_dm_employee.py
📦 进阶:制作 dmPython 离线安装包(.whl)
若需在多台服务器安装 dmPython,可制作离线 .whl包,无需重复编译:
[root@localhost dmPython]$ /usr/local/python3.12/bin/pip3 install wheel
[root@localhost dmPython]$ /usr/local/python3.12/bin/python3.12 setup.py bdist_wheel
- 3. 查找离线包:
执行后会生成 dist目录,里面的 .whl文件即为离线包:
[root@localhost dmPython]$ cd dist
[root@localhost dist]$ ls
dmpython-2.5.30-cp312-cp312-linux_x86_64.whl
- 4. 离线安装:
拷贝 .whl文件到其他服务器,执行:
[root@localhost ~]$ pip3 install dmpython-2.5.30-cp312-cp312-linux_x86_64.whl
❌ 常见问题排查(新手必看)
1. 环境变量配置后不生效?
- • 解决:关闭当前终端重新打开,或执行
source /etc/profile(系统级生效)。
2. 安装 dmPython 提示“ModuleNotFoundError: No module named 'setuptools'”?
- • 原因:Python 3.12 未安装 setuptools(编译驱动必需)。
[root@localhost ~]$ /usr/local/python3.12/bin/python3.12 -m pip install --upgrade setuptools wheel
3. 导入 dmPython 提示“ImportError: No module named 'dmPython'”?
- • 原因:驱动安装路径未被 Python 识别,或安装时用错 Python 版本。
# 临时指定路径
export PYTHONPATH=/usr/local/python3.12/lib/python3.12/site-packages:$PYTHONPATH
4. 连接数据库提示“网络异常”?
- • 检查达梦服务是否启动:
systemctl status DmServiceDMSERVER - • 检查数据库 IP/端口是否正确,防火墙是否开放 5236 端口。
如果在操作中遇到其他报错,欢迎在留言区贴出报错信息,一起交流解决方案~