Seite 1 von 1
python und bash clipboard
Verfasst: Montag 19. Februar 2018, 14:01
von brainstir
hallo,
ich will die aktuellen sachen aus dem Clipboard in einer variable speichern, dann einen Text einfügen und dann die alten sachen wieder in das Clipboard schreiben.
Bisher habe Ich es so probiert (Python 3):
Code: Alles auswählen
#!/usr/bin/python3
import os
import sys
import subprocess
#write old clipboard to variable
altes_clipboard = subprocess.check_output(['xclip', '-o'])
text = "dieser text wird eingefügt"
kommando = "echo '" + text + "'|xclip -selection clipboard"
os.system(kommando)
keyboard.send_keys("<ctrl>+v")
#write old clipboard back
altes_clipboard2 = "echo '" + altes_clipboard + "'|xclip -selection clipboard"
os.system(altes_clipboard2)
Allerdings is nacher nicht, das was vorher im Clipboard war, wieder drin, sondern der "text"...
Was mache Ich falsch?
Wenn Ich nachdem Ich das Script ausgeführt habe, dann einmal gucke was jetzt im Clipboard drin ist, kommt dies hier:
>>> subprocess.check_output(['xclip', '-o'])
b'%MCEPASTEBIN%'
Re: python und bash clipboard
Verfasst: Montag 19. Februar 2018, 23:52
von brainstir
Also ich versuche es jetzt mit Pyperclip.
Aber wenn Ich in Autokey-gtk Pyperclip.copy('blub') nutzen will kommt:
Script name: 'Selection Test2'
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/autokey/service.py", line 460, in execute
exec(script.code, scope)
File "<string>", line 2, in <module>
File "/usr/local/lib/python3.5/dist-packages/pyperclip/__init__.py", line 138, in copy_gtk
cb = gtk.Clipboard()
File "/usr/lib/python3/dist-packages/gi/__init__.py", line 64, in __getattr__
raise AttributeError(_static_binding_error)
AttributeError: When using gi.repository you must not import static modules like "gobject". Please change all occurrences of "import gobject" to "from gi.repository import GObject". See:
https://bugzilla.gnome.org/show_bug.cgi?id=709183
Ich hab jetzt ein paar Github Seiten gefunden, wo das Problem beschrieben wird und da steht was von wegen man soll GTK3 statt GTK (?) nutzen.
Wie oder wo kann ich das umstellen?
Hab keinen Fix gefunden.
Wenn Ich das Ganze direkt in einer Python-konsole eingebe, gehts.
Re: python und bash clipboard
Verfasst: Dienstag 20. Februar 2018, 07:24
von noisefloor
Hallo,
Ich hab jetzt ein paar Github Seiten gefunden, wo das Problem beschrieben wird und da steht was von wegen man soll GTK3 statt GTK (?) nutzen.
Wie oder wo kann ich das umstellen?
Gar nicht. Das ist das, was deine Linux-Distribution mitbringt, du kannst nicht manuell zwischen GTK3 und GTK2 wechseln.
GTK3 ist aber seit Jahren Standard... Welche Linux-Distribution benutzt du?
Gruß, noisefloor
Re: python und bash clipboard
Verfasst: Dienstag 20. Februar 2018, 08:39
von brainstir
Was ich da gefunden hatte war recht aktuell, von Dezember 2017.
Allerdings haben die da auf einen Bug verlinkt, der schon 2013 war, was mich dann wieder etwas verwundert hat.
Fidne den Eintrag aber gerade nicht wieder.
Ich benutze Linux Mint 18.1 Cinnamon 64bit.
Ich habs gerade auch einmal in einer virtuellen Maschine mit Cinnamon 18.3. getestet, da tritt die selbe Fehlermeldung auf.
Re: python und bash clipboard
Verfasst: Mittwoch 21. Februar 2018, 10:34
von brainstir
Hab den Bug jetzt gefunden:
https://bugzilla.gnome.org/show_bug.cgi?id=709183
Da ist auch ein Fix:
https://bug709183.bugzilla-attachments. ... ?id=282629
Aber Ich weiss nicht wie Ich den einspiele, kann mir jemand sagen wie das geht?
Re: python und bash clipboard
Verfasst: Mittwoch 21. Februar 2018, 11:02
von narpfel
@brainstir: Es sieht so aus, als würde Autokey
Gtk3 benutzen, Pyperclip
aber Gtk2. Das geht nicht.
Es gibt
hier einen PR, der Pyperclip auf Gtk3 portiert. Damit müsstest du den eigentlich anwenden und das Resultat installieren können:
Code: Alles auswählen
git clone https://github.com/asweigart/pyperclip.git
cd pyperclip
git remote add pr https://github.com/coreycb/pyperclip.git
git pull pr master
pip install --user .
Das sollte dann die systemweite Installation überschreiben.
Re: python und bash clipboard
Verfasst: Mittwoch 21. Februar 2018, 13:21
von brainstir
Ok danke, habe den Pyperclip-Port installiert, aber Ich bekomme immer noch die selbe Fehlermeldung in Autokey.
Muss Ich da noch irgendwas machen bevor er die neu installierte Pyperclip Version benutzt?
Oder muss ich das neu installierte Pyperclip in einen bestimmten Ordner verschieben?
Re: python und bash clipboard
Verfasst: Mittwoch 21. Februar 2018, 13:53
von narpfel
@brainstir: Was war denn die Ausgabe von `pip`? Und was wird ausgegeben, wenn du das hier ausführst:
Code: Alles auswählen
import sys
print(sys.path)
import pyperclip
print(pyperclip)
Verschieben solltest du eigentlich nichts müssen, das Installieren übernimmt der `pip`-Aufruf.
Re: python und bash clipboard
Verfasst: Mittwoch 21. Februar 2018, 15:56
von brainstir
Bei pip stand es wurde successfull installiert.
Die Ausgabe der Befehle lautet:
Code: Alles auswählen
-> % python3
Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.path)
['', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/local/lib/python3.5/dist-packages/setuptools-28.8.0-py3.5.egg', '/usr/lib/python3/dist-packages']
>>> import pyperclip
>>> print(pyperclip)
<module 'pyperclip' from '/usr/local/lib/python3.5/dist-packages/pyperclip/__init__.py'>
Wenn Ich das jetzt richtig verstehe nimmt er noch das falsche Paket von der Distribution, weil das GTK3-Pyperclip hatte Ich hier installiert:
Code: Alles auswählen
benutzer@pc [15:53:05] [~/Documents/pyperclip-gtk3/pyperclip/pyperclip] [master]
-> % ll
insgesamt 24K
-rw-r--r-- 1 benutzer benutzer 21K Feb 21 13:13 __init__.py
Oder kopiert der das normalerweise direkt in den Ordner?
Ich kenne mich mit pip nicht aus.
Re: python und bash clipboard
Verfasst: Mittwoch 21. Februar 2018, 16:09
von narpfel
Hast du `pip` oder `pip3` ausgeführt? `pip` installiert Pakete für Python 2. Besser ist es, `pip` als Modul mit dem richtigen Interpreter auszuführen:
[codebox=bash file=Unbenannt.bsh]
python3 -m pip install --user .
[/code]
Und falls du das irrtümlich für Python 2 installierte `pyperclip` nicht brauchst, kannst du es mit
[codebox=bash file=Unbenannt.bsh]
python2 -m pip uninstall pyperclip
[/code]
wieder entfernen.
Pip installiert Pakete im Grunde genommen, indem es das Paket (bzw. Modul, wenn es nur eine einzelne Datei ist) an den richtigen Ort kopiert und dann noch Metadaten anlegt (etwa eine Liste mit den Dateien, die zu einem Paket gehören und beim Deinstallieren wieder entfernt werden müssen).
Re: python und bash clipboard
Verfasst: Mittwoch 21. Februar 2018, 17:03
von brainstir
okay, ich habe es jetzt mit python3 installiert und die python2-version deinstalliert.
Jetzt kommt zwar keine Fehlermeldung mehr, aber dafür friert Autokey jetzt entweder komplett ein oder es wird nach dem Versuch das Skript auszuführen direkt geschlossen

Re: python und bash clipboard
Verfasst: Mittwoch 21. Februar 2018, 20:38
von brainstir
hat jemand vielleicht zu dem ursprünglichen code eine idee?