用于epics pv访问的python库
pvap的Python项目详细描述
python的pvapy-pvaccess
pvapy包是一个用于epics4的python api。它同时支持聚乙烯醇和钙 提供者,所有标准Epics4类型(结构、标量、联合等) 标准通道操作集(put/get、monitor)、rpc客户机/服务器, PVAserver等,它使用BooS/Python来封装EpICS4 C++库和API, 目前在类Unix操作系统(Linux、OSX)上受支持。
安装
目前,conda和 PYPI包管理系统。如果没有预先构建的包 为您工作,或者如果您需要32位linux软件包,则必须构建 pvapy来源。
条件a
- 支持的平台:Linux(64位)、OSX
- 支持的Python版本:python2、python3
确保conda
命令在您的路径中,并执行以下命令:
$ conda install -c epics pvapy
这将导致安装pvapy、pvapy boost和epics base Conda软件包。
PYPI
- 支持的平台:Linux(64位)
- 支持的Python版本:python2、python3
确保pip
命令在您的路径中,并执行以下命令:
$ pip install pvapy
pvapy pip包包含所有必需的epics基库和boost库。
构建
本节面向那些希望从 源代码。
先决条件
从源代码构建pvapy需要以下软件的最新版本:
- 标准开发工具(gcc、make、autoconf等)
- python开发头文件/库(>;=v2.6.6)
- Sphinx/Sphinx RTD主题(可选,用于生成文档) < > >
- Epics基础(>;=v3.14.12.3)
- Epics4 CPP版本(>;=v4.4.0);请注意,Epics7版本包括 所有需要的V4模块
- boost(>;=v1.41.0);必须构建boost_python库
- boost.numpy(可选,用于将数值标量数组检索为numpy 阵列;Boost v1.63.0及更高版本不需要此功能) < > >
- 在单独的终端中,启动testdbpv ioc: < > >
- 从pvapy的
bin/$epics\u host\u arch中获取适当的设置文件 目录并启动python(python pva模块称为pvaccess):
< > > - 在单独的终端中,启动testdbpv ioc: < > >
- pv值可以使用ioc shell命令
dbpf
更改,例如: < > > - 在python中监视通道,传入订户对象(函数 处理pvobject实例的程序: < > >
- 在终端1中,创建一个简单的"配对"频道: < > >
- 在终端2中,开始监视此频道: < > >
- 在终端1中,更新对象的一个字段: < > >
从源代码构建和安装pvapy有两种方法:自动化 和习俗。自动本地安装将下载并构建预定义的 Epics Base、Boost和PVAPY的版本。自定义本地安装依赖于现有的epics库和boost库,并且只构建pvapy。
自动生成
确保所需的python版本在您的路径中,并执行 从pvapy源目录顶部执行以下命令:
$ PREFIX=/local/install/path make local
这应该构建并安装预定义版本的epics base,boost python
以及前缀变量指定的目录下的pvapy库。如果
未指定前缀,所有软件都将安装在工具/local
下
pvapy发行版的子目录。
自定义生成
除了与python相关的prerequsites之外,自定义构建还需要 以下软件已生成:
上面提到的版本号是测试pvapy的最早版本号。 任何最新版本的python和boost库(例如 在当前的Linux发行版中)应该可以工作。同样,任何最新版本 由epics4 cpp支持的epics基应该是好的。
在构建epics4 cpp模块时,不需要做任何特殊的事情。确保 用于此模块的epics基本安装与 用于构建Epics4模块。
此模块不适合在Microsoft Windows上使用。只有类Unix 当前支持操作系统(如Linux、MacOS、Solaris)。
<H4>1。配置pvapy这可以手动完成,也可以使用autoconf。
对于手动配置:请阅读configure/release
和
配置/配置站点
文件,并按照其中的说明进行操作。
对于自动配置:在顶层目录r中UN/<
$ make configure EPICS_BASE=/epics/base/path [EPICS4_DIR=/epics/v4/path][BOOST_NUM_PY_DIR=/boost.numpy/path][BOOST_ROOT=/boost/path][PYTHON_VERSION=3]
注意,只有在v4模块具有
未重命名。在上面的命令中,将/epics/base/path
替换为full
指向epics基本目录的路径,以及/epics/v4/path
的完整路径
包含v4模块pvdatacpp、pvaccesscpp等的顶级目录。
如果使用的是epics7版本,则可以省略epics4_dir参数,如下所示
配置脚本将在
Epics基本目录。
可选的boost_num_py_dir
参数启用对旧版本的numpy数组的支持
boost版本,因为v1.63.0和更高版本已经包含了numpy库。
可选的boost_root
参数通常用于自定义boost
安装目录。如果您使用自定义python安装
使用共享对象库时,可能需要设置路径和ld_library_path
运行上述make configure
命令之前的环境变量。
另外,请注意,使用python 3.x构建需要python_version=3参数。
make configure
命令将检查boost/python库,并且
创建合适的configure/release.local
和configure/config\u site.local
生成过程使用的文件。它们应该看起来像
以下示例:
$ cat RELEASE.local PVACLIENT= /home/epics/v4/pvaClientCPP PVDATABASE= /home/epics/v4/pvDatabaseCPP NORMATIVETYPES= /home/epics/v4/normativeTypesCPP PVACCESS= /home/epics/v4/pvAccessCPP PVDATA= /home/epics/v4/pvDataCPP EPICS_BASE= /home/epics/base-3.15.5 $ cat CONFIG_SITE.local PVA_PY_CPPFLAGS= -I/usr/include -I/usr/include/python2.7 PVA_PY_LDFLAGS= -L/usr/lib64 -lpython2.7 PVA_PY_SYS_LIBS= boost_python PVA_API_VERSION=480PVA_RPC_API_VERSION=480HAVE_BOOST_NUM_PY=0HAVE_BOOST_PYTHON_NUM_PY=0PYTHON_VERSION=2.7 PVA_PY_PYTHON= /bin/python PVA_PY_PYTHONPATH= /home/epics/v4/pvaPy/lib/python/2.7/linux-x86_64 PVA_PY_LD_LIBRARY_PATH= /usr/lib64 PVA_PY_EPICS_BASE= /home/epics/base-3.15.5 PVA_PY_EPICS4_DIR= /home/epics/v4 PVA_PY_HOST_ARCH= linux-x86_64 PVA_PY_SETUP_SH= /home/epics/pvaPy/bin/linux-x86_64/pvapy_setup_full.2.7.sh
上述文件是在64位RHEL7.4计算机上自动创建的,其中 安装了以下boost/python软件包:
$ rpm -q boost-python python-devel boost-python-1.53.0-27.el7.x86_64 python-devel-2.7.5-58.el7.x86_64
注意,自动配置过程还创建
pvapy_setup_full.$python_version.(c)sh
和
pvapy_setup_pythonpath.$python_version.(c)sh中的文件
bin/$epics_host_arch
目录。完整的安装文件修改路径,
ld_library_path和pythonpath环境变量,而pythonpath
安装程序文件只修改pythonpath变量。例如,
$ cat pvapy_setup_pythonpath.2.7.sh #!/bin/sh## modifies PYTHONPATH environment variable#iftest -z "$PYTHONPATH";thenexportPYTHONPATH=/home/epics/v4/pvaPy/lib/python/2.7/linux-x86_64 elseexportPYTHONPATH=/home/epics/v4/pvaPy/lib/python/2.7/linux-x86_64:$PYTHONPATHfi
在构建pvapy之后,可以使用环境设置文件 构建的python模块,例如:
$ . /home/epics/v4/pvaPy/bin/linux-x86_64/pvapy_setup_pythonpath.2.7.sh $ echo$PYTHONPATH /home/epics/v4/pvaPy/lib/python/2.7/linux-x86_64
或者对于csh用户:
% source /home/epics/v4/pvaPy/bin/linux-x86_64/pvapy_setup_pythonpath.2.7.csh % echo$PYTHONPATH /home/epics/v4/pvaPy/lib/python/2.7/linux-x86_64<H4>2。编译pvapy源代码
在顶层包目录中运行:
$ conda install -c epics pvapy0
上述命令将创建并安装可加载库pvaccess.so
在lib/python
目录下,可以直接由python导入。
此步骤是可选的,需要安装Sphinx:
$ conda install -c epics pvapy1
如果系统上有一个sphinx build
脚本,html页面将
在documentation/sphinx/u build/html
目录中生成。
基本用法:pv put/get
对于简单的测试,请执行以下操作:
$ conda install -c epics pvapy2
$ conda install -c epics pvapy3
在上面,注意除了pvint等pv对象类之外,还有一个 也可以使用标准的python类型作为通道输入的参数。
基本用途:pv监视器
$ conda install -c epics pvapy2
$ conda install -c epics pvapy5
$ conda install -c epics pvapy6
高级用法:pva服务器类
$ conda install -c epics pvapy7
$ conda install -c epics pvapy8
$ conda install -c epics pvapy9
此更改应出现在端子2中。