Python 导入.dll-s

Python 导入.dll-s,python,kivy,Python,Kivy,我有一个Kivy应用程序,它必须连接到物理设备。 连接和控制设备的代码已写入.dll文件。 所以我想从.dll文件中导入一些函数 我设法用python导入了它。下面是它的代码: mydll.py: import clr # import dll-s try: clr.AddReference("CETAx10_x15") clr.AddReference("Converter") clr.AddReference("NLog") clr.AddReference

我有一个Kivy应用程序,它必须连接到物理设备。 连接和控制设备的代码已写入.dll文件。 所以我想从.dll文件中导入一些函数

我设法用python导入了它。下面是它的代码:

mydll.py:

import clr

# import dll-s
try:
    clr.AddReference("CETAx10_x15")
    clr.AddReference("Converter")
    clr.AddReference("NLog")
    clr.AddReference("ValueDefine")
    clr.AddReference("Python.Runtime")
except:
    clr.AddReference("cls\\CETAx10_x15")
    clr.AddReference("cls\\Converter")
    clr.AddReference("cls\\NLog")
    clr.AddReference("cls\\ValueDefine")
    clr.AddReference("cls\\Python.Runtime")

import CETAx10_x15
import Converter
import NLog
import ValueDefine
import Python.Runtime
import System


def get_openports():

    temp = []
    output = []

    ports_reply = CETAx10_x15.CETA.get_ports(temp)

    for elem in ports_reply[1]:
        output.append(elem)

    return output

print(get_openports())
运行它将返回['COM3','COM4',,因此它会做它应该做的事情

我的Kivy应用程序运行完美,无需导入此mydll.py文件。 在my Kivy应用程序中导入此mydll.py将返回以下错误消息:

[INFO   ] [Logger      ] Record log in C:\Mirk\CETACal\logs\kivy_17-03-01_150.txt
[INFO   ] [Factory     ] 193 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: sdl2
[INFO   ] [Kivy        ] v1.9.2.dev0, git-c6018cc, 20170222
[INFO   ] [Python      ] v3.4.4 (v3.4.4:737efcadf5a6, Dec 20 2015, 20:20:57) [MSC v.1600 64 bit (AMD64)]
[INFO   ] [Logger      ] Record log in C:\Mirk\CETACal\logs\kivy_17-03-01_151.txt
[INFO   ] [OSC         ] using <thread> for socket
[INFO   ] [Window      ] Provider: sdl2
[INFO   ] [GL          ] Using the "OpenGL" graphics system
[INFO   ] [GL          ] GLEW initialization succeeded
[INFO   ] [GL          ] Backend used <glew>
[INFO   ] [GL          ] OpenGL version <b'4.3.0 - Build 10.18.14.4432'>
[INFO   ] [GL          ] OpenGL vendor <b'Intel'>
[INFO   ] [GL          ] OpenGL renderer <b'Intel(R) HD Graphics 4600'>
[INFO   ] [GL          ] OpenGL parsed version: 4, 3
[INFO   ] [GL          ] Shading version <b'4.30 - Build 10.18.14.4432'>
[INFO   ] [GL          ] Texture max size <16384>
[INFO   ] [GL          ] Texture max units <32>
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
[INFO   ] [EZS-2G      ] The system parameters are: ['C:\\Mirk\\CETACal\\main.py']
['COM3', 'COM4']
 Traceback (most recent call last):
   File "C:\Mirk\CETACal\main.py", line 2708, in <module>
     EZS.run()
   File "C:\Python34\lib\site-packages\kivy\app.py", line 802, in run
     root = self.build()
   File "C:\Mirk\CETACal\main.py", line 1745, in build
     self.root = Builder.load_file(os.path.join(cls.config.kvPATH, 'root.kv'))
   File "C:\Python34\lib\site-packages\kivy\lang\builder.py", line 301, in load_file
     return self.load_string(data, **kwargs)
   File "C:\Python34\lib\site-packages\kivy\lang\builder.py", line 380, in load_string
     self._apply_rule(widget, parser.root, parser.root)
   File "C:\Python34\lib\site-packages\kivy\lang\builder.py", line 500, in _apply_rule
     rule.canvas_before, rootrule)
   File "C:\Python34\lib\site-packages\kivy\lang\builder.py", line 804, in _build_canvas
     Instruction = Factory.get('Instruction')
   File "C:\Python34\lib\site-packages\kivy\factory.py", line 139, in __getattr__
     module = __import__(name=item['module'], fromlist='.')
 TypeError: __import__() takes at least 1 argument (0 given)
[INFO][Logger]在C:\Mirk\CETACal\logs\kivy_17-03-01_150.txt中记录日志
[信息][工厂]加载了193个符号
[信息][图像]提供商:img_-tex、img_-dds、img_-sdl2、img_-pil、img_-gif(img_-ffpyplayer忽略)
[信息][文本]提供商:sdl2
[INFO][Kivy]v1.9.2.dev0,git-c6018cc,20170222
[INFO][Python]v3.4.4(v3.4.4:737efcadf5a6,2015年12月20日,20:20:57)[MSC v.1600 64位(AMD64)]
[INFO][Logger]在C:\Mirk\CETACal\logs\kivy_17-03-01_151.txt中记录日志
[信息][OSC]用于插座
[信息][窗口]提供程序:sdl2
[信息][GL]使用“OpenGL”图形系统
[INFO][GL]GLEW初始化成功
[信息][GL]已使用后端
[信息][GL]OpenGL版本
[信息][GL]OpenGL供应商
[INFO][GL]OpenGL渲染器
[信息][GL]OpenGL解析版本:4,3
[信息][GL]明暗处理版本
[信息][GL]纹理最大大小
[信息][GL]纹理最大单位
[信息][窗口]自动添加sdl2输入提供程序
[信息][窗口]不允许使用虚拟键盘,单模,未对接
[INFO][EZS-2G]系统参数为:['C:\\Mirk\\CETACal\\main.py']
['COM3','COM4']
回溯(最近一次呼叫最后一次):
文件“C:\Mirk\CETACal\main.py”,第2708行,在
EZS.run()
文件“C:\Python34\lib\site packages\kivy\app.py”,第802行,正在运行
root=self.build()
文件“C:\Mirk\CETACal\main.py”,第1745行,内部版本
self.root=Builder.load_文件(os.path.join(cls.config.kvPATH,'root.kv'))
文件“C:\Python34\lib\site packages\kivy\lang\builder.py”,第301行,在load\u文件中
返回self.load_字符串(数据,**kwargs)
文件“C:\Python34\lib\site packages\kivy\lang\builder.py”,第380行,装入字符串
self.\u应用规则(小部件、parser.root、parser.root)
文件“C:\Python34\lib\site packages\kivy\lang\builder.py”,第500行,在应用规则中
rule.canvas_之前,rootrule)
文件“C:\Python34\lib\site packages\kivy\lang\builder.py”,第804行,在构建画布中
指令=工厂。获取(‘指令’)
文件“C:\Python34\lib\site packages\kivy\factory.py”,第139行,在\uuu getattr中__
模块=\uuuu导入(名称=项['module'],fromlist='。)
TypeError:\uuuuu import\uuuuuu()至少接受1个参数(给定0个)
如您所见,['COM3','COM4']已打印出来

我的应用程序和“mydll.py”都很有魅力。 但在导入之后,它将失败

我只是不明白为什么导入后两个独立工作的程序会失败

我正在使用: Win7 python 3.4
Kivy 1.9.2.devs0(发布日期:22.02)

设法解决了这个问题。我添加了以下行:

从导入lib导入导入

到文件:

C:\Python34\Lib\site packages\kivy\factory.py