Problematik Sublime- Python

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Beginner2013
User
Beiträge: 13
Registriert: Donnerstag 7. März 2013, 10:28

BlackJack hat geschrieben:@Beginner2013: Vielleicht fangen wir noch einmal ganz von vorne an: Was soll denn überhaupt gemacht werden? Wenn wir mal von einem frisch installierten Sublime ausgehen; an welcher Stelle vom Plugin-Tutorial fangen die Probleme an?

Kann es sein, dass es daran hakt, dass Python 3 verwendet wird, Sublime aber mit einem eingebauten Python 2.6 daher kommt? Der Python-Interpreter für die Plugins ist ja fest in Sublime integriert, also muss man Quelltext für diese Python-Version schreiben.

Mit den Einstellungen in ``Python.sublime-build`` sollten Plugins jedenfalls nichts zu tun haben.

Code: Alles auswählen

import sublime, sublime_plugin, mysql.connector

class ExampleCommand(sublime_plugin.TextCommand):
	def run(self, edit):
		self.view.insert(edit, 0, "Hello, World!")
In der Run Methode habe ich dann das eigentliche Programm für das PlugIn geschrieben, das will ich aber nicht unbedingt online stellen daher die Zeile mit "Hello World".
Wenn ich das eigentliche Programm dann "build", kommt der am Anfang beschriebene Fehler. Es wäre möglich das ich Python 3 verwende, aber nur weil ich es nun in der ``Python.sublime-build` Datei eingestellt habe,
Vielen Dank.
MfG
Zuletzt geändert von Anonymous am Montag 11. März 2013, 10:39, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
BlackJack

@Beginner2013: Das Build-Command in Sublime „baut” nichts in dem Sinne wie das für die Build-Commands für andere Programmiersprachen gemacht wird, dieser Schritt ist in Python ja nicht nötig, sondern führt die aktuelle Datei als eigenständiges Python-Programm aus. Dazu muss es sich aber auch um ein eigenständiges Programm handeln. Mit Plugins geht das nicht, denn die müssen im Kontext des Editors laufen und nicht mit einem beliebigen externen Python.

Beim Verwenden als Plugin könnte das Problem dann am Import von `mysql.connector` liegen, was nicht zur Python-Standardbibliothek gehört und damit auch nicht dem Python welches in den Editor eingebettet ist. Da müsstest Du schauen ob und wie man zusätzliche Module für *das* Python installieren kann.
Beginner2013
User
Beiträge: 13
Registriert: Donnerstag 7. März 2013, 10:28

BlackJack hat geschrieben:@Beginner2013: Das Build-Command in Sublime „baut” nichts in dem Sinne wie das für die Build-Commands für andere Programmiersprachen gemacht wird, dieser Schritt ist in Python ja nicht nötig, sondern führt die aktuelle Datei als eigenständiges Python-Programm aus. Dazu muss es sich aber auch um ein eigenständiges Programm handeln. Mit Plugins geht das nicht, denn die müssen im Kontext des Editors laufen und nicht mit einem beliebigen externen Python.

Beim Verwenden als Plugin könnte das Problem dann am Import von `mysql.connector` liegen, was nicht zur Python-Standardbibliothek gehört und damit auch nicht dem Python welches in den Editor eingebettet ist. Da müsstest Du schauen ob und wie man zusätzliche Module für *das* Python installieren kann.
Der mysql.connector ist laut Internet Bestandteil der Python Standardbibliothek und funktioniert in der IDLE von Python auch als solches. Nur in Sublime dann anscheinend nicht?!?
Die Sublime Bibliotheken erkennt er aber auch nicht. Außerdem ist der Error dahingehend wie auf der ersten Seite am Anfang beschrieben:

[Error 2] Das System kann die angegebene Datei nicht finden
[cmd: [u'python', u'-u', u'C:\\Users\\Armin\\Desktop\\myda\\PlugIn\\DiplomarbeitARMIN.py']]
[dir: C:\Users\Armin\Desktop\myda\PlugIn]
[path: C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\WIDCOMM\Bluetooth Software\;C:\Program Files\WIDCOMM\Bluetooth Software\syswow64;\;C:\Program Files (x86)\Sony\VAIO Startup Setting Tool;C:\Program Files (x86)\Common Files\Roxio Shared\10.0\DLLShared\;C:\Program Files (x86)\Common Files\Roxio Shared\DLLShared\;C:\Program Files (x86)\Windows Live\Shared;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\]
[Finished]

Ich erbitte Ihre Hilfe.
Vielen Dank.
MfG
BlackJack

@Beginner2013: `mysql.connector` gehört nicht zur Standardbibliothek. Wenn Du das in IDLE importieren kannst, dann ist es auf dem System zusätzlich installiert worden für das Python mit dem IDLE ausgeführt wird.

Die Sublime-Bibliotheken kennt das Python im Editor. Die gezeigte Fehlermeldung hat nichts mit Plugins zu tun, das ist die Ausgabe vom Build-Command und das wiederum hat nichts mit Plugins zu tun. Das funktioniert mit Plugins grundsätzlich nicht, denn die müssen wie gesagt im Kontext vom Editor ausgeführt werden — also vom Editor mit dem Python vom Editor.
Beginner2013
User
Beiträge: 13
Registriert: Donnerstag 7. März 2013, 10:28

BlackJack hat geschrieben:@Beginner2013: `mysql.connector` gehört nicht zur Standardbibliothek. Wenn Du das in IDLE importieren kannst, dann ist es auf dem System zusätzlich installiert worden für das Python mit dem IDLE ausgeführt wird.

Die Sublime-Bibliotheken kennt das Python im Editor. Die gezeigte Fehlermeldung hat nichts mit Plugins zu tun, das ist die Ausgabe vom Build-Command und das wiederum hat nichts mit Plugins zu tun. Das funktioniert mit Plugins grundsätzlich nicht, denn die müssen wie gesagt im Kontext vom Editor ausgeführt werden — also vom Editor mit dem Python vom Editor.
D.h. Plug-Ins können nicht gebaut werden durch den build Command? Wie kann ich das Plug-In dann austesten in Sublime?
Vielen Dank
BlackJack

In der Konsole (`Sublime Menü → View → Show Console`) ``view.run_command('example') `` ausführen. Das sind die Schritte 1 und 2 im Plugin-Tutorial!

In der Konsole sieht man auch andere Probleme, wenn man das Plugin zum Beispiel gar nicht importieren konnte, weil ein Modul nicht existiert oder ein Syntaxfehler enthalten ist, und so weiter. Jedes mal wenn man ein Plugin speichert, versucht Sublime das Modul neu zu importieren.
Beginner2013
User
Beiträge: 13
Registriert: Donnerstag 7. März 2013, 10:28

BlackJack hat geschrieben:In der Konsole (`Sublime Menü → View → Show Console`) ``view.run_command('example') `` ausführen. Das sind die Schritte 1 und 2 im Plugin-Tutorial!

In der Konsole sieht man auch andere Probleme, wenn man das Plugin zum Beispiel gar nicht importieren konnte, weil ein Modul nicht existiert oder ein Syntaxfehler enthalten ist, und so weiter. Jedes mal wenn man ein Plugin speichert, versucht Sublime das Modul neu zu importieren.
Ok danke, ja die Konsole in Sublime kenne ich eh. view.run_command('example') mit '' ?? habe es bis jetzt ohne versucht aber es ist nicht gegangen. Jetzt habe ich es mit 'example' also mit '' versucht und es gibt zumindest keinen Fehler zurück. Das Plug-In ruft es anscheinend aber nicht ganz auf.
Ohne die ' ' -->

>>> view.run_command(Search)
Traceback (most recent call last):
File "<string>", line 1, in <module>
NameError: name 'Search' is not defined

Ok danke, ich glaube das ist schon die richtige Spur.
Vielen Dank.
BlackJack

@Beginner2013: Da muss für den von Dir gezeigten Quelltext 'example' stehen, mit Anführungszeichen. Wie der Name zustande kommt wird doch auch in Schritt 2 vom Plugin-Tutorial erklärt.

Wenn ich den weiter oben gezeigten Quelltext als Plugin speichere, kommt beim Speichern folgendes in der Sublime-Konsole:

Code: Alles auswählen

Writing file /home/bj/.config/sublime-text-2/Packages/User/something.py with encoding UTF-8
Reloading plugin /home/bj/.config/sublime-text-2/Packages/User/something.py
Traceback (most recent call last):
  File "./sublime_plugin.py", line 62, in reload_plugin
  File "./something.py", line 1, in <module>
    import sublime, sublime_plugin, mysql.connector
ImportError: No module named mysql.connector
Also wie erwartet weil es das Modul nicht gibt. Und damit bricht die Ausführung in der ``import``-Zeile ab und die Klassendefinition wird nicht ausgeführt.

Ein ``view.run_command('example')`` hat keinen Effekt, weil dort nicht existierende Kommandos anscheinend einfach ignoriert werden.
Beginner2013
User
Beiträge: 13
Registriert: Donnerstag 7. März 2013, 10:28

BlackJack hat geschrieben:@Beginner2013: Da muss für den von Dir gezeigten Quelltext 'example' stehen, mit Anführungszeichen. Wie der Name zustande kommt wird doch auch in Schritt 2 vom Plugin-Tutorial erklärt.

Wenn ich den weiter oben gezeigten Quelltext als Plugin speichere, kommt beim Speichern folgendes in der Sublime-Konsole:

Code: Alles auswählen

Writing file /home/bj/.config/sublime-text-2/Packages/User/something.py with encoding UTF-8
Reloading plugin /home/bj/.config/sublime-text-2/Packages/User/something.py
Traceback (most recent call last):
  File "./sublime_plugin.py", line 62, in reload_plugin
  File "./something.py", line 1, in <module>
    import sublime, sublime_plugin, mysql.connector
ImportError: No module named mysql.connector
Also wie erwartet weil es das Modul nicht gibt. Und damit bricht die Ausführung in der ``import``-Zeile ab und die Klassendefinition wird nicht ausgeführt.

Ein ``view.run_command('example')`` hat keinen Effekt, weil dort nicht existierende Kommandos anscheinend einfach ignoriert werden.
Achsooo, vielen Dank.
Wie kann ich den mysql.connector den nun miteinbinden? Indem ich die Datei in den richtigen Pfad kopiere oder? Welcher wäre das den?
Vielen herzlichen Dank.
BlackJack

@Beginner2013: In den richtigen Pfad kopieren funktioniert in der Regel nur mit reinen Python-Modulen. Datenbankmodule enthalten in der Regel C-Code mit der Anbindung an die entsprechenden Client-Bibliotheken für die Datenbank.

Da würde ich mal in den Sublime-Foren suchen und gegebenfalls nachfragen.
Antworten