Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Nox

Supermoderator

  • »Nox« ist der Autor dieses Themas

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

1

02.04.2019, 18:18

werte doch mal die exception bzw den python traceback aus.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Spixmaster

unregistriert

2

02.04.2019, 18:20

werte doch mal die exception bzw den python traceback aus.

Wie geht das? Noch nie gehört.

Nox

Supermoderator

  • »Nox« ist der Autor dieses Themas

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

3

02.04.2019, 20:01

Moment stand da vorhin nicht was von error_already_set? Es ist schwierig ein bewegliches Ziel zu erwischen ;) .

Traceback kann man sich in python so anschauen: https://github.com/nmslib/nmslib/issues/327 (vgl dort gepostetes Beispiel).
Ansonsten schaut dir genau an was in der exception steht. Ansonsten kannst du noch versuchen den Aufruf Stück für Stück zu machen. Sprich

C-/C++-Quelltext

1
2
3
py::object pyObj1 = py::module::import("instagram_private_api");
py::object pyObj2 = pyObj1.attr("Client");
py::object pyObj3 = pyObj2.attr("ClientCompatPatch");
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Spixmaster

unregistriert

4

02.04.2019, 20:24

@Nox Du hast recht. habe es updaten müssen

Nox

Supermoderator

  • »Nox« ist der Autor dieses Themas

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

5

02.04.2019, 22:34

Und sonst? Bist mittlerweile weiter gekommen? Hat das Anschauen der exception bzw des tracebacks oder das aufspiltten der Aufrufe irgendwas gebracht?
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Spixmaster

unregistriert

6

03.04.2019, 16:18

@Nox. Mir fehlt nur noch der letzte Schritt. Das Ärgerliche an der Sache ist, dass ich darauf brenne, weiterzuprogrammieren, aber ich 100% von diesem Problem aufgehalten werde.
Wärst du so freundlich und könntest du dir diese Frage noch einmal anschauen?
Habe sie noch einmal sauber strukturiert hier gestellt: https://stackoverflow.com/questions/5549…f-a-python-repo

Vielen Dank für die Nachfrage im Übrigen!

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

7

03.04.2019, 17:21

Ich weiß nicht ob deine Bibliothek für Python einfach die installierte Version von Python vom System verwendet. Falls dem so ist dann solltest du die API benutzen können, ohne die Dateien in dein Projektverzeichnis zu kopieren. Das kannst du ja einfach überprüfen indem du einfach mal versuchst die Funktionen daraus zu benutzen. Das bedeutet du importierst dir die passenden Module und arbeitest damit. Es ist aber nicht unwahrscheinlich dass die Bibliothek eine eigene Pythonimplementation benutzt, welche von deinen durch PIP installierten Modulen nichts weiß. Dann könntest du natürlich versuchen die Installierten Pythonmodule und deren Abhängigkeiten in dein Prohektverzeichnis zu kopieren. Am einfachsten ist es wenn du das einfach mal ausprobierst.

edit:

Zitat

It is also possible to import objects defined in the Python standard library or available in the current Python environment (sys.path) and work with these in C++.

Das klingt für mich als könntest du tatsächlich so als müsstest du das Modul nicht kopieren. Aber teste es am besten einfach.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Nox

Supermoderator

  • »Nox« ist der Autor dieses Themas

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

8

04.04.2019, 01:28

Du stellst deine Frage unglaublich seltsam bzw wird für mich nicht wirklich klar wo nun eigentlich genau dein Problem liegt bzw woran es nun scheitert.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Tobiking

1x Rätselkönig

  • Private Nachricht senden

9

04.04.2019, 08:05


Zusätzlich
​​​​Mein kurzes Verständnis zu Python. Ein Modul ist doch einfach eine .py samt ihren Inhaltes, die wie eine Klasse zu verstehen ist. Also Modul calc mit Methode add ruft man in einem anderen Modul mit

Quellcode

1
2
import calc
calc.add()


Wo ist denn bitte dann instagram_private_api.py in der Python API?!

"instagram_private_api" ist kein Modul sondern ein Package. Ein Package wird definiert durch einen Ordner mit einer __init__.py. In der __init__.py kann man Module importieren damit sie direkt aus dem Package verwendet werden können. Bei dem Package ist das so.

So wie ich pybind verstehe, versuchst du instagram_private_api.Client.ClientCompatPatch zu importieren. Es ist aber instagram_private_api.Client und instagram_private_api.ClientCompatPatch.

Ich würde es so versuchen:

C-/C++-Quelltext

1
2
3
py::object package = py::module::import("instagram_private_api")
py::object client = package.attr("Client")
py::object compat = package.attr("ClientCompatPatch")

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

10

07.04.2019, 07:51

Kleiner Gag am Rande: Um mir den ganzen Bind-Ärger zu sparen, habe ich einen Python-Server mit der Instagram-API geschrieben und rufe den quasi als Instagram-Proxy von meinem eigentlichen Programm mit einem Standard-REST-Client auf.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige