BeaEngine in Python nutzen

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
seux
User
Beiträge: 10
Registriert: Mittwoch 21. August 2013, 11:17

Hallo zusammen,

ich würde gerne die BeaEngine in Python nutzen. Ich hab mir dazu die BeaEngine library win x64 von deren homepage runtergeladen, weiß jetzt aber nicht, wie ich die nutzen kann. Wenn ich das Archiv entpacke, gibt es dort einen Ordner headers mit einer BeaEnginePython.py Datei. Ich weiß aber nicht, wie ich die Datei in die Python Shell importieren kann.

Ich wäre euch sehr dankbar, wenn ihr mir da helfen könntet. Bin mit Python noch nicht so vertraut.

vg, seux
Zuletzt geändert von seux am Donnerstag 22. August 2013, 13:34, insgesamt 1-mal geändert.
BlackJack

@seux: Die muss in einem Verzeichnis in `sys.path` liegen, zum Beispiel im aktuellen Arbeitsverzeichnis.
seux
User
Beiträge: 10
Registriert: Mittwoch 21. August 2013, 11:17

okay, ich hab das jetzt mal so gemacht, dass ich den Pfad zu sys.path hinzufüge, bekomme aber folgenden Fehler, wenn ich das nun importieren möchte:

Code: Alles auswählen

import sys
sys.path += ['D:\\Libraries\\Python\\beaengine\\headers']
from BeaEnginePython import *

Code: Alles auswählen

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    from BeaEnginePython import *
  File "D:\Libraries\Python\beaengine\headers\BeaEnginePython.py", line 277, in <module>
    __module = WinDLL('BeaEngine')
  File "C:\Python27\lib\ctypes\__init__.py", line 365, in __init__
    self._handle = _dlopen(self._name, mode)
WindowsError: [Error 126] Das angegebene Modul wurde nicht gefunden
Was habe ich jetzt falsch gemacht?
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Da scheint ein C-Modul benutzt zu werden. Hast du das denn vorab kompiliert? Gibt es keine `setup.py` oder sonstige Installationsmöglichkeiten?
BlackJack

@seux: Jetzt muss die DLL noch irgendwo liegen wo sie gefunden wird. Da bin ich bei Windows im Moment überfragt wo standardmässig überall nach DLLs gesucht wird.
seux
User
Beiträge: 10
Registriert: Mittwoch 21. August 2013, 11:17

also die DLL sind vorkompiliert mitgeliefert. Die Struktur sieht wie folgt aus:

Code: Alles auswählen

beaengine/
├── headers
│   ├── BeaEngineDelphi32.pas
│   ├── BeaEngineDelphi64.pas
│   ├── BeaEngineFasm32.inc
│   ├── BeaEngineFasm64.inc
│   ├── BeaEngineGoAsm32.inc
│   ├── BeaEngineGoAsm64.inc
│   ├── BeaEngine.h
│   ├── BeaEngineMasm32.inc
│   ├── BeaEngineMasm64.inc
│   ├── BeaEngineNasm32.inc
│   ├── BeaEngineNasm64.inc
│   ├── BeaEnginePureBasic32.pb
│   ├── BeaEnginePureBasic64.pb
│   ├── BeaEnginePython.py
│   ├── BeaEnginePython.pyc
│   ├── bea_test.py
│   └── Includes
│       ├── basic_types.h
│       └── export.h
├── Warning_for_C_coders.txt
└── Win64
    ├── Dll
    │   ├── BeaEngine64.dll
    │   ├── BeaEngine64.exp
    │   ├── BeaEngine64.lib
    │   ├── BeaEngineCheetah64.dll
    │   ├── BeaEngineCheetah64.exp
    │   └── BeaEngineCheetah64.lib
    └── Lib
        ├── BeaEngine64.lib
        └── BeaEngineCheetah64.lib
sowas wie setup.py ist da nicht mit dabei
seux
User
Beiträge: 10
Registriert: Mittwoch 21. August 2013, 11:17

Noch eine Ergänzung: Ich hab es jetzt auch mal bei Linux ausprobiert, indem ich BeaEnginePython über pip installiert hab. Aber beim importieren bekomme ich trotzdem ungefähr den gleichen Fehler, wie auch bei Windows

Code: Alles auswählen

from BeaEnginePython import *
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/BeaEnginePython.py", line 277, in <module>
    __module = CDLL('libBeaEngine.so')
  File "/usr/lib/python2.7/ctypes/__init__.py", line 365, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: libBeaEngine.so: cannot open shared object file: No such file or directory
BlackJack

@seux: Du wirst mit ``pip`` sicher nicht die *.so installiert haben. Die musst Du Dir schon vom Anbieter holen und selber installieren.
seux
User
Beiträge: 10
Registriert: Mittwoch 21. August 2013, 11:17

Okay, es funktioniert jetzt. Ich hab einen Installer für Windows gefunden. Damit hat es ohne Probleme geklappt. :D
Antworten