python通过omniORBpy调用CORBA

omniORB参考地址:

omniORB

omniORB - Browse Files at SourceForge.net

omniORB - Browse /omniORBpy/omniORBpy-4.3.0 at SourceForge.net

Windows

普通使用好像不需要安装omniorb。就对接北向接口业务需要使用python3.10的windows包,但目前好像没有python3.10的包,因此对接北向接口建议在linux上运行。

pip install omniorb==4.2.3

只下载不安装python -m pip download -d ./ omniorb==4.2.3

python -m pip download -d ./ omniorb

找到指定模块包进行安装python -m pip install --no-index --find-links=./ omniorb==4.2.3

需要网络安装python -m pip install --find-links=./ omniorb==4.2.3

或者网页下载:Links for omniorb

yum reinstall --downloadonly --downloaddir=/tmp/ bzip2

下载解压omniORBpy-4.3.0-win64-python310.zip

注意:需要使用3.10版本的python环境

环境变量配置

PATH添加E:\2022software\omniORBpy-4.3.0\bin\x86_win32 # 命令行下直接运行omniORBpy提供的命令(如编译IDL文件的omniidl和命名服务的omniNames等)

创建PYTHONPATH添加E:\2022software\omniORBpy-4.3.0\bin\x86_win32;E:\2022software\omniORBpy-4.3.0\lib\python;E:\2022software\omniORBpy-4.3.0\lib\x86_win32 # 使python可以搜索到omniORBpy提供的CORBA编程模块

创建OMNINAMES_DATADIR添加E:\2022software\omniORBpy-4.3.0\data # 指定命名服务的数据存储目录

创建LD_LIBRARY_PATH添加E:\2022software\omniORBpy-4.3.0\lib\x86_win32 # 找到omniORB核心库

两种定位分布式对象的方式:

1,使用IOR定位

2,使用命名服务定位(推荐)

使用命名服务需要注册表中添加信息

HKEY_LOCAL_MACHINE\SOFTWARE\omniORB下创建InitRef字符串,并赋值NameService=corbaname::localhost

好像不不需要注册表添加信息

启动方式

命名服务数据文件不存在时omniNames.exe -start

命名服务数据文件存在时omniNames.exe

查看omniNames监听端口并配置代码进行连接

windows上对接北向接口问题,均为解决,转用linux上的包并部署得以解决:

    import _omnipy

ImportError: Module use of python310.dll conflicts with this version of Python.

    import _omnipy

ImportError: DLL load failed while importing _omnipy: 找不到指定的模块。

2

Linux

只能在root用户下启动Naming Service命名服务,然后让程序来使用。

192.168.124.92

说明:omniORB的安装是否成功和gcc和omniORBpy和python3.10都无关

1,安装配置omniORB

cd /home

tar -xvf omniORB-4.3.0.tar.bz2

mkdir /home/omniORB-4.3.0/build

mkdir /home/myomniORB

cd /home/omniORB-4.3.0/build

../configure --prefix=/home/myomniORB # 选择安装目录,默认/usr/local

../configure PYTHON=/usr/local/bin/python3 # 指定python(查看所有路径whereis pyton,查看当前使用的路径which python)

make # 编译(时间较久)

make install # 安装

make遇到问题:Python.h:没有那个文件或目录

参考:

【已解决】致命错误:Python.h:没有那个文件或目录-CSDN博客

linux yum 离线安装rpm包(转) - 走看看

离线下载yum re/install --downloadonly --downloaddir=./ python3-devel

离线安装rpm -Uvh --force --nodeps *.rpm

不好使

没有权限:sudo chmod -R 777 /usr/local/bin/python3

不好使

不指定PYTHON

好使

2,安装配置omniORBpy

cd /home

tar -xvf omniORBpy-4.3.0.tar.bz2

mkdir /home/omniORBpy-4.3.0/build

mkdir /home/myomniORBpy

cd /home/omniORBpy-4.3.0/build

../configure --prefix=/home/myomniORBpy --with-omniorb=/home/myomniORB

../configure PYTHON=/usr/local/bin/python3 # 指定python(查看所有路径whereis pyton,查看当前使用的路径which python)

# 选择安装目录,默认/usr/local

make

make install

make遇到问题:configure: error: You must specify the omniORB root directory.

需要指定omni ORB的安装目录,使用../configure -h查看所有参数,发现--with-omniorb参数,配置该参数即可。

系统中配置环境变量

vim ~/.bashrc

export PYTHONPATH=/home/omniORB-4.3.0/bin:/home/myomniORB/lib/python3.7/site-packages:/home/myomniORBpy/lib/python3.7/site-packages

export LD_LIBRARY_PATH=/home/myomniORB/lib:/home/myomniORBpy/lib

export OMNINAMES_DATADIR=/home/myomniORB/omninames

3,测试

python3

>>>import CORBA # 不报错说明成功

若报错,查看/home/myomniORB/lib是否存在python3.7目录,若不存在,使用which python查看默认python环境,若不是指向python3.7,则修改/usr/bin/python软连接指向python3.7后重新安装。

4,其他命令

更新pip:

python3 -m pip install --upgrade pip

或conda install mingw libpython

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/50295.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CI/CD】docker + Nginx自动化构建部署

CI/CD是什么 CI/CD 是持续集成(Continuous Integration)和持续部署(Continuous Deployment)或持续交付(Continuous Delivery)的缩写,它们是现代软件开发中用于自动化软件交付过程的实践。 1、…

Centos安装、迁移gitlab

Centos安装迁移gitlab 一、下载安装二、配置rb修改,起服务。三、访问web,个人偏好设置。四、数据迁移1、查看当前GitLab版本2、备份旧服务器的文件3、将上述备份文件拷贝到新服务器同一目录下,恢复GitLab4、停止新gitlab数据连接服务5、恢复备…

GO-学习-03-基本数据类型

数据类型:基本数据类型和复合数据类型 基本数据类型:整型、浮点型、布尔型、字符串 复合数据类型:数组、切片、结构体、函数、map、通道(channel)、接口 整型: package main import "fmt" im…

远程调试 Python 脚本

这段代码用于远程调试 Python 脚本,特别是通过 Visual Studio Code(VS Code)的远程调试功能。它会在指定的服务器 IP 和端口上等待调试器的连接。以下是每一行代码的详细介绍及中文注释: # 检查是否提供了服务器 IP 和端口 if ar…

【个人笔记】一个例子理解工厂模式

工厂模式优点:创建时类名过长或者参数过多或者创建很麻烦等情况时用,可以减少重复代码,简化对象的创建过程,避免暴露创建逻辑,也适用于需要统一管理所有创建对象的情况,比如线程池的工厂类Executors 简单工…

Apache Doris + Paimon 快速搭建指南|Lakehouse 使用手册(二)

湖仓一体(Data Lakehouse)融合了数据仓库的高性能、实时性以及数据湖的低成本、灵活性等优势,帮助用户更加便捷地满足各种数据处理分析的需求。在过去多个版本中,Apache Doris 持续加深与数据湖的融合,已演进出一套成熟…

代码改进,模型优化,强化深度学习

在线个人接代码改进,带跑通,预测模型,模型优化,增加模块,预测,微调,融合, Depth learning,机器学习程序带写,环境调试,代码调通,模型优…

32单片机开发bootloader程序

一,单片机为什么要使用bootloader 1、使用bootloader的好处 1) 程序隔离:可以同时存在多个程序,只要flash空间够大,或者通过外挂flash,可以实现多个程序共存,在多个程序之间切换使用。 2)方便程…

OpenHarmony 入门——初识JS/ArkTS 侧的“JNI” NAPI 常见的函数详解(二)

引言 前面一篇文章OpenHarmony 入门——初识JS/ArkTS 侧的“JNI” NAPI(一)介绍了NAPI的基础理论知识,今天重点介绍下NAPI中重要的函数。 一、Native 侧的NAPI的相关的C函数 以下面一段代码为例介绍下主要函数的功能和用法。 napi_value …

01-client-go

想学习K8S源码,可以加 :mkjnnm 1、介绍 client-go 是用来和 k8s 集群交互的go语言客户端库,地址为:https://github.com/kubernetes/client-go client-go 的版本有两种标识方式: v0.x.y (For each v1.x.y Kubernetes…

系统模块时序图的重要性:解锁系统模块交互的全景视图

在复杂的系统开发中,理解和管理不同模块之间的交互是成功的关键。时序图是一种有效的工具,可以帮助我们清晰地展示这些交互,提升设计和开发的效率。本文将深入探讨系统模块之间的时序图,并通过实例展示其实际应用。 1. 什么是系统模块之间的时序图? 系统模块之间的时序图…

Layui表格向下滑动时表头固定悬浮

记录:Layui表格向下滑动时表头固定悬浮 使用table的height参数: 示例 //“方法级渲染”配置方式 table.render({ //其它参数在此省略height: 315 //固定值 }); table.render({ //其它参数在此省略height: full-20 //高度最大化减去差值 }); 等价于&am…

项目的小结

1.实现实时聊天 1.服务端建立一个ConcurrentHashMap<> 用来存储在线用户&#xff0c;用户账号和socket然后&#xff0c;如果有个人发了信息&#xff0c;就去数据库中查询&#xff0c;然后根据这个在线用户进行传递信息 服务端框架&#xff1a; public class ServerMain {…

git sendemail使用

教程参考&#xff1a; git-send-email - 以电子邮件形式发送补丁集 1、安装git-email 2、配置 SMTP 服务器 git config --global sendemail.smtpserver smtp.163.com git config --global sendemail.smtpserverport 465 git config --global sendemail.smtpuser xxxxxx163.c…

Hyperledger Fabric 网络体验 - 网络启动过程概览

进入fabric-samples/test-network目录&#xff0c;执行指令&#xff1a; ./network.sh up -i 2.5执行完指令能看到fabric已经启动。 作为第一次Fabric网络体验&#xff0c;网络启动主要包含三个操作&#xff0c;分别是生成配置文件、启动网络和操作网络。 配置文件 使用cr…

PHP-显示所有错误信息

1 需求 2 接口 3 示例 要在 PHP 中显示所有错误信息&#xff0c;你可以通过修改 php.ini 配置文件或在你的 PHP 脚本中设置错误报告级别来实现。以下是两种常见的方法&#xff1a; 方法一&#xff1a;修改 php.ini 配置文件 找到你的 php.ini 文件。这个文件的位置取决于你的 P…

传知代码-智慧医疗:纹理特征VS卷积特征(论文复现)

代码以及视频讲解 本文所涉及所有资源均在传知代码平台可获取 论文链接&#xff1a;https://www.sciencedirect.com/science/article/abs/pii/S1076633223003537?__cf_chl_rt_tkJ9Aipfxyk5d.leu48P20ePFNd4B2aunaSmzVpXCg.7g-1721292386-0.0.1.1-6249 论文概述 今天我们把视线…

【系统架构设计师】十八、信息系统架构设计理论与实践②

目录 四、企业信息系统的总体框架 4.1 战略系统 4.2 业务系统 4.3 应用系统 4.4 企业信息基础设施 4.5 业务流程重组BPR 4.6 业务流程管理BPM 五、信息系统架构设计方法 5.1 行业标准的体系架构框架 5.2 架构开发方法 5.3 信息化总体架构方法 5.4 信息化建设生命周…

Android小技巧:利用动态代理自动切换线程(续)

本文是针对上文Android小技巧&#xff1a;利用动态代理自动切换线程的一个补充&#xff0c;补充一种简单的实现方式。 上文中我们提到利用动态代理将对某个对象的方法调用自动切换到对应线程中去&#xff0c;只是探讨了可行性和局限&#xff0c;但如果每个功能都手动创建代理就…

Golang | Leetcode Golang题解之第290题单词规律

题目&#xff1a; 题解&#xff1a; func wordPattern(pattern string, s string) bool {word2ch : map[string]byte{}ch2word : map[byte]string{}words : strings.Split(s, " ")if len(pattern) ! len(words) {return false}for i, word : range words {ch : patt…