私は物理デバイスに接続する必要のあるKivy-Appを持っています。 デバイスを接続して制御するためのコードは、すでに.dllファイルに書き込まれています。 だから私はいくつかの関数を.dllファイルからインポートしたいと思います。.dll-sをインポート中
私はそれを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']を返します。実行するには、だから何それが必要ありません。
My Kivy Appは、このmydll.pyファイルをインポートせずに完璧に動作します。あなたは[「COM3」、「COM4」]プリントアウトさを見たよう
[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)
:私のKivyアプリケーションでこのmydll.pyをインポートする は、次のエラー・メッセージを返します。
私のアプリと "mydll.py"はどちらも魅力的です。 しかし、インポート後は失敗します。
インポート後に独立して動作する2つのプログラムがなぜ失敗するのか分かりません。
私が使用しています: Win7の パイソン(リリース:22.02)3.4 Kivyの1.9.2.devs0を