当前位置:首页>Linux>Linux 安装 dmPython 总失败?这篇零踩坑指南救了我!

Linux 安装 dmPython 总失败?这篇零踩坑指南救了我!

  • 2026-09-09 17:50:50
Linux 安装 dmPython 总失败?这篇零踩坑指南救了我!

对于刚接触 Linux下 Python开发的新手来说,环境搭建是第一道坎——尤其涉及达梦数据库(DM)与 Python联动时,版本兼容、依赖缺失、环境变量配置等问题很容易让人卡壳。

本文结合实际操作场景,整理了一套从 Python安装、达梦环境配置到 dmPython驱动编译的完整流程,每一步都附详细命令和报错解决方案,新手可直接跟着操作,全程无冗余,专注解决“安装成功但用不了”的核心痛点。

📋 前期环境准备(必看)

搭建前先确认软件版本兼容性,避免因版本不匹配返工,以下是最低要求(推荐用更高版本,稳定性更佳):

软件名称
最低版本要求
说明
达梦数据库(DM)
DM 8.0 及以上
Python
连接达梦的基础,需提前安装完成
Python
3.6.8 及以上
本文以 3.12.13为例(适配多数 Linux 系统)
dmPython
2.3 及以上
Python
连接达梦的专用驱动(达梦自带)

🗄️ 达梦数据库环境配置(核心步骤)

达梦数据库安装完成后,需先配置环境变量,让系统识别达梦的命令和依赖库(本文以麒麟V11系统为例,Ubuntu替换 yum为 apt即可)。

当前路径

  • • 达梦安装目录:/home/dmdba/dmdbms(替换为你的实际安装目录)
  • • 操作用户:dmdba(达梦默认管理员用户)

配置步骤

  1. 1. 编辑用户环境变量文件(仅当前用户生效,推荐新手):
[dmdba@localhost ~]$ vi ~/.bash_profile
  1. 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
  1. 3. 保存退出并生效环境变量:
    • • 保存退出:按 Esc→ 输入 :wq→ 回车
    • • 生效命令:
[dmdba@localhost ~]$ source ~/.bash_profile
  1. 4. 验证配置是否成功:
[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. 编译安装(指定路径,避免冲突)

  1. 1. 进入解压目录:
[dmdba@localhost ~]$ cd /usr/local/src/Python-3.12.13
  1. 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`
  1. 3. 编译并安装(耗时 5-10 分钟,耐心等待):
[root@localhost Python-3.12.13]# make && make install
- 若编译报错“依赖缺失”,先安装依赖:
yum install -y zlib-devel openssl-devel libffi-devel

4. 配置 Python 环境变量

  1. 1. 编辑 root用户环境变量(全局生效):
[root@localhost ~]$ vi /root/.bash_profile
  1. 2. 添加 Python 路径:
export PATH=/usr/local/python3.12/bin:$PATH
  1. 3. 生效并验证:
[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. 1. 切换到 dmPython 驱动目录(达梦安装目录下):
[dmdba@localhost ~]$ cd /home/dmdba/dmdbms/drivers/python/dmPython
  1. 2. 确认目录下有 setup.py(驱动安装核心文件):
[dmdba@localhost dmPython]$ ls

正常会显示 Buffer.c、setup.py、README.txt等文件。

  1. 3. 执行安装命令(指定 Python 3.12 路径):
[root@localhost dmPython]$ /usr/local/python3.12/bin/python3.12 setup.py install
  1. 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. 1. 保存脚本为 query_dm.py,添加执行权限:
vi /home/dmdba/query_dm_employee.py
# 给脚本添加执行权限(可选)

chmod
 +x /home/dmdba/query_dm_employee.py
  1. 2. 执行脚本:
[dmdba@localhost ~]$ /usr/local/python3.12/bin/python3.12 /home/dmdba/query_dm_employee.py
  1. 3. 成功输出示例:

📦 进阶:制作 dmPython 离线安装包(.whl)

若需在多台服务器安装 dmPython,可制作离线 .whl包,无需重复编译:

  1. 1. 安装 wheel 工具:
[root@localhost dmPython]$ /usr/local/python3.12/bin/pip3 install wheel
  1. 2. 生成 .whl 包:
[root@localhost dmPython]$ /usr/local/python3.12/bin/python3.12 setup.py bdist_wheel
  1. 3. 查找离线包:
    执行后会生成 dist目录,里面的 .whl文件即为离线包:
[root@localhost dmPython]$ cd dist
[root@localhost dist]$ ls
dmpython-2.5.30-cp312-cp312-linux_x86_64.whl
  1. 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 端口。

如果在操作中遇到其他报错,欢迎在留言区贴出报错信息,一起交流解决方案~

最新文章

随机文章