用于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需要以下软件的最新版本:

  1. 标准开发工具(gcc、make、autoconf等)
  2. python开发头文件/库(>;=v2.6.6)
  3. Sphinx/Sphinx RTD主题(可选,用于生成文档)
  4. < > >

    从源代码构建和安装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之外,自定义构建还需要 以下软件已生成:

    1. Epics基础(>;=v3.14.12.3)
    2. Epics4 CPP版本(>;=v4.4.0);请注意,Epics7版本包括 所有需要的V4模块
    3. boost(>;=v1.41.0);必须构建boost_python库
    4. boost.numpy(可选,用于将数值标量数组检索为numpy 阵列;Boost v1.63.0及更高版本不需要此功能)
    5. < > >

      上面提到的版本号是测试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.localconfigure/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)shpvapy_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 pvapy
      
      0

      上述命令将创建并安装可加载库pvaccess.solib/python目录下,可以直接由python导入。

      <H4>3。生成文档

      此步骤是可选的,需要安装Sphinx:

        $ conda install -c epics pvapy
      
      1

      如果系统上有一个sphinx build脚本,html页面将 在documentation/sphinx/u build/html目录中生成。

      基本用法:pv put/get

      对于简单的测试,请执行以下操作:

      1. 在单独的终端中,启动testdbpv ioc:
      2. < > >
          $ conda install -c epics pvapy
        
        2
        1. 从pvapy的bin/$epics\u host\u arch中获取适当的设置文件 目录并启动python(python pva模块称为pvaccess):
        2. < > >
            $ conda install -c epics pvapy
          
          3

          在上面,注意除了pvint等pv对象类之外,还有一个 也可以使用标准的python类型作为通道输入的参数。

          基本用途:pv监视器

          1. 在单独的终端中,启动testdbpv ioc:
          2. < > >
              $ conda install -c epics pvapy
            
            2
            1. pv值可以使用ioc shell命令dbpf更改,例如:
            2. < > >
                $ conda install -c epics pvapy
              
              5
              1. 在python中监视通道,传入订户对象(函数 处理pvobject实例的程序:
              2. < > >
                  $ conda install -c epics pvapy
                
                6

                高级用法:pva服务器类

                1. 在终端1中,创建一个简单的"配对"频道:
                2. < > >
                    $ conda install -c epics pvapy
                  
                  7
                  1. 在终端2中,开始监视此频道:
                  2. < > >
                      $ conda install -c epics pvapy
                    
                    8
                    1. 在终端1中,更新对象的一个字段:
                    2. < > >
                        $ conda install -c epics pvapy
                      
                      9

                      此更改应出现在端子2中。

                      高级用法:rpc客户端类

                      1. 在单独的终端中,启动v4测试rpc服务:
                      2. < > >
                          $ pip install pvapy
                        
                        0
                        1. rpc测试通道是"sum":
                        2. < > >
                            $ pip install pvapy
                          
                          1

                          高级用法:rpC服务器类

                          示例1

                          1. 在一个单独的终端中,获取环境文件并启动python:
                          啊!
                          1. 在终端1中,巨大的前一个请求对象
                          AAAAAAAAA 23

                          例2

                          1. 在终端2中:
                          啊!
                          1. 在终端1中:
                          AAAAAH25

                          例3

                          1. 在终端2中:
                          啊!
                          1. 在终端1中:
                          是啊。

                          欢迎加入QQ群-->: 979659372 Python中文网_新手群

                          推荐PyPI第三方库


热门话题
传递Java处理类类型参数的方式的参数   java安卓中间层admob在logcat中导致大量GC_FOR_ALLOC释放消息   java Vert。x Http请求未将参数分配为配置   java中多线程的输出不正确   如何减少java本地线程的冗余   java不完全分块结果   使用OpenCv时java中的Mat数据类型不受支持错误   Java中的正则表达式不工作,而同一正则表达式在shell中工作   java如何从数组中删除元素?   JDBCJava。sql。SQLException:[Microsoft][ODBC Microsoft Access驱动程序]操作必须使用可更新的查询   java如何以对角线打印字符串变量的字符?   SonarQube 5.2的java自定义插件生成NoClassDefFoundError   macos使用Java应用程序打开浏览器选项卡