Pycad 利用pythonnet引用Cpython库numpy
本帖最后由 枫叶棋语 于 2023-3-7 00:59 编辑需要加载导入pythonnet包,关键在于将Ironpython对象转换成Cpython对象,转换后,就如在Cpython中使用一样。
需要安装Python 3.8,并添加路径
import sys
sys.path.append(r'D:\Pycad\src\packages\pythonnet.3.0.1\lib\netstandard2.0')
sys.path.append(r'D:\Pycad\src\packages\Python.Included.3.11.1\lib\netstandard2.0')
sys.path.append(r'D:\Pycad\src\packages\Python.Deployment.2.0.0\lib\netstandard2.0')
sys.path.append(r'D:\Program Files\Python38')
import clr
clr.AddReference('Python.Runtime.dll')
clr.AddReference('Python.Deployment.dll')
clr.AddReference('Python.Included.dll')
from Python.Runtime import *
from Python.Deployment import *
from Python.Included import *
if not PythonEngine.IsInitialized:
PythonEngine.Initialize()
def CpythonConvertToIron(object):
return eval(object.ToString())
def IronConverToCpython(object):
return PythonEngine.Eval(str(object))
with Py.GIL():
np = Py.Import("numpy")
list1= [,]
list2=IronConverToCpython(list1)
arr=np.asarray(list2)
最终结果
>>>arr
[
]
本帖最后由 枫叶棋语 于 2023-3-4 22:07 编辑
np数组转为list用以下方法:
list1= arr.tolist()
list2=CpythonConvertToIron(list1)
>>>list1= arr.tolist()
>>>list2=CpythonConvertToIron(list1)
>>>list2
[, ]
>>>
我只想问下这位大神怎么研究出来的。如何才能达到这样的高度?
同样的代码我用到犀牛grasshopper里面也成功了 陨落 发表于 2023-3-6 17:58
我只想问下这位大神怎么研究出来的。如何才能达到这样的高度?
同样的代码我用到犀牛grasshopper里面也成 ...
数据转换还是有限制,要是能通用就更好了 优秀,回帖是一种美德:D- 大佬 这两个路径是要安装什么库才有啊sys.path.append(r'D:\Pycad\src\packages\Python.Included.3.11.1\lib\netstandard2.0')
sys.path.append(r'D:\Pycad\src\packages\Python.Deployment.2.0.0\lib\netstandard2.0') ymin 发表于 2023-3-25 19:27
大佬 这两个路径是要安装什么库才有啊sys.path.append(r'D:\Pycad\src\packages\Python.Included.3.11.1\li ...
import sys
import clr
sys.path.append(r'D:\Program Files\Python38')
sys.path.append(r'D:\Program Files\Python38\Lib\site-packages')
sys.path.append(r'D:\Program Files\Python38\Lib\site-packages\pythonnet\runtime')
clr.AddReference('Python.Runtime')
from Python.Runtime import *
import os
os.environ["PYTHONHOME"] = r'D:\Program Files\Python38'
os.environ["PYTHONNET_PYDLL"]=r'D:\Program Files\Python38\python38.dll'
os.environ['PYTHONPATH'] = r'D:\Program Files\Python38\Lib' + ';' +r'D:\Program Files\Python38\Lib\site-packages' pyb =Py.Import('builtins')
py_float=pyb.float
py_int=pyb.int
py_str=pyb.str
py_tuple=pyb.tuple
py_list=pyb.list
py_set=pyb.set
py_dict=pyb.dict
这样可以直接使用Cpython里面的基本函数,dir(pyb),可以看到更多内容
页:
[1]