pyepics下载和安装

24 篇文章 24 订阅

条件准备

PyEpics适用Python版本3.6以及更高。在本次编写时,虽然对于Python 3.6美誉出现问题,但对版本3.7,3.8,3.9和3.10.0-beta1进行了自动化测试。PyEpics版本3.4.3是适用于Python 2.7或Python3.5的最终版本。

在64位linux,64位Mac OSX和642位windows上支持并且经常使用Pyepics。已知适用于包括树莓派的ARM处理器的Linux。截至编写本文时,只对Linux64进行了自动化测试。PyEpics可能仍然适用32位Windows和Linux,但这些系统未被定期检查。

pyepics要求EPICS通道访问版本3.14.12或者更高,强烈推荐版本3.15或者7.0或者更高。更具体地说,pyepics需要来自EPICS Base的共享库libca和libCom(在linux上libca.so和libcom.so,在Mac OSX上libca.dylib和libCom.dylib或者在windows上ca.dll和Com.dll)。

对于Linux64, linux32, linuxArm, Windows64, Windows32和Darwin64(MacOS),提供了用3.16.2或7.0.4构建的libca(libCom)的与构建版本(如何构建这些的细节是在源套件的clibs文件夹中),并且将被安装到python包目录和默认适用。这意味着你不需要安装EPICS base库或者任何其它包来适用pyepics。对于可能想要使用它们自己的来自EPICS base的libca版本的EPICS专家,如在以下给出了何做这件事的介绍。

强烈推荐Python numpy模块,并且如果可用,将在EPICS waveforms和numpy数组之间自动转化。

autosave模块需要pyparsing包,它是广泛可用的并且经常随着很多Python发行包默认被安装。wx模块需要wxPython包,而qt模块需要PyQt或者PySide。

下载和安装

pyepics包的最新稳定版是3.5.1,可以用以下进行安装:

pip install pyepics

如果你正在使用Anaconda Python,有一些提供最新版本的conda通道,但在PyPI上的版本应该被认为这个参考版本。你也可以下载源包,解包它,并且用以下进行安装:

python setup.py install

开始,设置EPICS环境变量

Pyepics为了实际上工作在运行时将寻找和装载通道访问动态库(取决于所在系统libca.so, libca.dylib或ca.dll)。对于最常用的操作系统和架构,提供了这些库的现代版本,并且将于pyepics一起安装和使用。我们强烈推荐使用这些。

如果这些提供的libca版本对你没有作用,请让我们知道。如果你需要或者想要使用一个不同的libca版本,你可以设置环境变量PYEPICS_LIBCA为这个动态库的完整路径作为libca,例如:

export PYEPICS_LIBCA=/usr/local/epics/base-7.0.4/lib/linux-x86_64/libca.so

注意:libca将需要找到另一个EPICS CA库libCom。这几本总是在于libca相同的目录中,但你可能需要确认你指向的libca可以找到所需的libCom。要要查找到哪个CA库将被pyepics使用,使用:

>>> import epics
>>> epics.ca.find_libca()

随着EPICS库被装载,你将需要能够连接到EPICS过程变量。一般,这些变量由EPICS I/O控制器(IOCs)提供,IOCs是运行在网络上某个设备的进程。如果你连接到在你本地子网上IOCs提供的PVs,你应该没有问题。如果你尝试到达你直接子网之外的IOCs,你需要设置环境变量EPICS_CA_ADDR_LIST指向为PVs搜索哪个网络。

测试

为Python 3.7,3.8,3.9和3.10-beta-1,用Github动作进行了自动化和持续的单元测试。这使用了一个ubuntu-linux环境。

要你自己运行这些测试,你将需要pytest模块。你将需要一个EPICS softIOC作为一个单独进程,和一个更新PV值得模拟器作为一个单独进程。只要所有进程可以看到PVs(所有都使用一个PyTest前缀),这些可以都运行在相同的机器或者在你网络上的不同机器。softIoc不能运行在一个独立终端进程或者使用procServ程序。要设置测试环境,首先在一个shell中启动测试的softIoc:

~> cd tests/Setup
~> softIoc ./st.cmd

如果你安装了procServ,你能够做:

~> cd tests/Setup
~> bash ./start_ioc.sh

这将把这个IOC设为一个后台进程。第二,运行这个模拟器(也在test/Setup),使得EPICS通道变化:

~> python simulator.py

这些不是必须运行在于你测试相同的机器上,但这里的PVs将需要被所有涉及的进程发现。

现在,你准备在tests文件夹中运行测试。在对应Python库的很多场景中,应该能够运行所有测试,用单个命令测量测试覆盖率。因为pyepics测试将改变底层线程上下文,一个简单

~> cd ..
~> pytest test_*.py

将显示很多错误。你应该以单独运行pytest运行每个测试:

~> for testfile in test_*.py; do  pytest $testfile ; done

自动化测试过程也使用coverage工具来帮助标识代码的哪部分实际上由tests运行。用于使用GUI的代码不幸的不易被自动化过程测试。此外,一个softIoc将需要支持所有Device的子类,这不能被保证。

开发版

通过pyepics github repository进行pyepics的开发。要获取最新版本的一个副本,做:

git clone git@github.com/pyepics/pyepics.git

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值