首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python.Runtime.PythonException:因为Python.NET 3.0 int不能隐式转换为Enum。使用Enum(int_value)

Python.Runtime.PythonException:因为Python.NET 3.0 int不能隐式转换为Enum。使用Enum(int_value)
EN

Stack Overflow用户
提问于 2022-08-05 15:53:40
回答 2查看 459关注 0票数 3

我最近把我的代码移到了一台新电脑上。一个基本的示例代码如下(但您将无法运行它,因为您无法连接到我的服务器-抱歉,我不能使它更可重复)。

使用新计算机时,我会得到以下错误:

System.ArgumentException:因为Python.NET 3.0 int不能隐式转换为Enum。在方法OSIsoft.AF.Asset.AFValue RecordedValue(OSIsoft.AF.Time.AFTime,OSIsoft.AF.Data.AFRetrievalMode)中使用Enum (OSIsoft.AF.Data.AFRetrievalMode)-> Python.Runtime.PythonException:因为Python.NET 3.0 int不能隐式转换为Enum。使用Enum(int_value)*“。

我的旧计算机使用Spyder 4、Python3.7和Python.NET 2.5.2。新计算机使用Spyder 5、Python3.9和Python.NET 3.0。由于IT方面的限制,我无法在我的计算机上安装相同版本的Spyder和Python。不过,我不认为这是造成这个错误的原因。

有人知道什么会导致Enum-related问题吗?谢谢!

代码语言:javascript
复制
import PIconnect as PI

def pidownload(tag):
    with PI.PIServer() as server:
        point = server.search(tag)[0]
        data = point.recorded_value('-1m')
        data=data.to_frame()
    return data
tag='xxxx.pv' #confidential data tag replaced with xxxx
print(pidownload(tag))

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-08 01:34:54

RecordedValue函数在OSIsoft文件中的文档和recorded_valuePIConnect文档中的文档来看,Python函数似乎发送了一个enum,而C#-side函数正在接收一个enum值。但是,当检查GitHub文档是否为PIConnect时,我们可以看到问题在于retrieval_mode变量,该变量的默认值为RetrievalMode.AUTO,即IntEnum。正如我在存储库中注意到的那样,该转换似乎不能正常工作。

编辑

经过进一步检查,您的问题似乎是安装问题,可以通过重新安装piconnect来解决,请参阅此问题

票数 1
EN

Stack Overflow用户

发布于 2022-08-17 00:56:20

它在被降级为Python3.8(从3.9)和Python.NET 2.5 (从Python.NET 3.0)之后起了作用。我认为它对python3.9不起作用:http://pythonnet.github.io/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73252397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档