2017-03-01 1 views
0

Ich habe eine Kivy-App, die sich mit einem physischen Gerät verbinden muss. Der Code zum Verbinden und Steuern des Geräts ist bereits in DLL-Dateien geschrieben. Also möchte ich einige Funktionen aus der DLL-Datei importieren.Importieren .dll-s

Ich schaffte es, es in Python zu importieren. Hier ist der Code für sie:

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()) 

Lauf es wird wieder [ 'COM3', 'COM4'], so dass es das tut, was es soll.

Meine Kivy App läuft fehlerfrei, ohne diese mydll.py Datei zu importieren. dieses mydll.py in meinem Kivy App importieren wird die folgende Fehlermeldung zurück:

[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) 

Wie Sie die [ 'COM3', 'COM4'] wird ausgedruckt sehen.

Sowohl meine App und "mydll.py" funktioniert wie ein Charme. Aber nach dem Importieren wird es fehlschlagen.

Ich verstehe einfach nicht, warum zwei unabhängig arbeiten Programm nach dem Import fehlschlagen.

Ich verwende: Win7 Python 3.4 Kivy 1.9.2.devs0 (veröffentlicht: 22,02)

Antwort

0

Managed es zu lösen. Ich fügte hinzu, die folgende Zeile:

von importlib Import Import

in die Datei:

C: \ Python34 \ Lib \ site-packages \ Kivy \ factory.py