为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8 1-2-114-22.03.04-158322-10045
【操作系统】:Linux version 3.10.0 x86_64
【CPU】: Intel(R) Xeon(R) Silver 4108 CPU @ 1.80GHz
【问题描述】*:
背景:适配客户达梦环境,所以版本不能更换,开发环境有网络隔离,没有c++ build tool,所以无法本地编译dmPython。
问题:
在容器内的django工程引用django_dmPython抛错,具体内容如下
具体:
个人做的操作,找了台服务器安装了DM8,按照DM8_dmPython使用手册,分别尝试了两种编译方式
1)python setup.py install,找到python的lib位置,分别拷出dmPython和django_dmPython文件夹,修改容器的Dockerfile,增加COPY操作,将两个文件夹放置容器内python的lib位置,启动容器抛错:Error loading dmPython module:No module named 'dmPython';
2)更换rpm包方式,python setup.py bdist_rpm,在dist目录下找到编译后的rpm包,修改容器的Dockerfile,增加COPY和RUN操作,RUN操作即rpm的安装命令,启动容器抛错:Error loading dmPython module: libdmpi.so: cannot open shared object file: No such file or directory
其他信息:
1.安装了DM8的服务器上手动写python连接数据库OK
2.尝试把django工程代码拷到安装了DM8的服务器上跑,没有抛错
3.上面两次COPY命令,进入容器均能看到对应的文件夹和rpm包
该问题处理方式:
注意:
笔者环境的基础镜像内安装了python3和gcc,如果你的基础镜像没有这两个服务,会出现错误。
设置dmPython的dpi环境变量了吗
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/dm/dmdbms/drivers/dpi/