Debian 12 und pip

20.06.2023 - Lesezeit: 2 Minuten

https://www.debian.org/releases/bookworm/mips64el/release-notes.de.pdf

5.2.2 Python-Interpreter jetzt als extern verwaltet markiert

Die von Debian angebotenen Python3-Interpreter-Pakete (python3.11 und pypy3) sind jetzt gemäß PEP-668 (https://peps.python.org/pep-0668/) als extern verwaltet markiert. Die Version von python3-pip, die Debian bereitstellt, folgt diesem Konzept und wird es verweigern, Pakete für Debians Python-Interpreter zu installieren, außer die Option --break-system-packages ist angegeben. Wenn Sie eine Python-Applikation (oder -Version) installieren müssen, die nicht in Debian paketiert ist, empfehlen wir, dass Sie es mit pipx (aus dem Debian-Paket pipx) installieren. pipx wird eine Umgebung einrichten, die von anderen Applikationen und systemgebundenen Python-Modulen isoliert ist, und die zusätzliche Python-Applikation wird mit samt ihren Abhängigkeiten in dieser Umgebung installiert. Falls Sie ein Modul (oder eine Version) einer Python-Bibliothek installieren müssen, das nicht in Debian paketiert ist, empfehlen wir, es wenn möglich in eine virtualenv-Umgebung zu installieren. Sie können eine solche Umgebung mit Pythons stdlib-Modul venv (aus Debians python3-venv-Paket) erzeugen oder mit dem Drittanbieter-Werkzeug virtualenv (aus dem Paket virtualenv). Statt also zum Beispiel

pip install --user foo

auszuführen, verwenden Sie jetzt:

mkdir -p ~/.venvs && python3 -m venv ~/.venvs/foo && ~/.venvs/foo/bin/python -m pip install foo

, um das Modul in eine dedizierte virtualenv-Umgebung zu installieren.

Tags: Python debian env

python3-fdb apache docker

17.12.2021 - Lesezeit: ~1 Minute

Das Python-wsgi Programm läuft einen halben Tag ohne Probleme, doch dann kommt eine Fehlermeldung:

[ERROR] incompatible types, LP_c_short instance instead of LP_c_short instance

Tags: Python Apache Docker

Python 3.8 fdb "weakly-referenced object no longer exists"

27.06.2020 - Lesezeit: ~1 Minute

Der Befehl executemany in FirebirdSQL fdb liefert in Python 3.8 den Fehler "weakly-referenced object no longer exists".

Dehalb

aCursor.executemany(aSQL, aWerte)

ersetzen durch

aCursor.execute(aSQL, aWerte)
Tags: Python FirebirdSQL

pyperclip unter Kubuntu 18.04

21.01.2019 - Lesezeit: 2 Minuten

Mit pyperclip möchte ich einen Text ins Clipboard kopieren.


import pyperclip

def main():
    aClipboard = "Dieser Text soll ins Clipboard"
    print(aClipboard)
    pyperclip.copy(aClipboard)
    print("beendet.")
    return 0

if __name__ == '__main__':
    main()

Das Script liefert die folgenden Warnungen und der Text wird nicht ins Clipboard kopiert. Dieser Text soll ins Clipboard (test_pyperclip.py:17789): Gtk-WARNING **: 06:38:59.827: Theme parsing error: gtk.css:68:35: The style property GtkButton:child-displacement-x is deprecated and shouldn't be used anymore. It will be removed in a future version

(test_pyperclip.py:17789): Gtk-WARNING **: 06:38:59.827: Theme parsing error: gtk.css:69:35: The style property GtkButton:child-displacement-y is deprecated and shouldn't be used anymore. It will be removed in a future version

(test_pyperclip.py:17789): Gtk-WARNING **: 06:38:59.827: Theme parsing error: gtk.css:73:46: The style property GtkScrolledWindow:scrollbars-within-bevel is deprecated and shouldn't be used anymore. It will be removed in a future version beendet.

Da ich die KDE benutze gehe ich davon aus, dass pyperclip das falsche Clipboard anspricht. Mit pyperclip.set_clipboard('klipper') kann pyperclip dazu übereredet werden klipper als Clipboard zu benutzen:

import pyperclip

def main(): aClipboard = "Dieser Text soll ins Clipboard" print(aClipboard) pyperclip.set_clipboard('klipper') pyperclip.copy(aClipboard) print("beendet.") return 0

if name == 'main': main()

Tags: Python

Python-Script Play All My Mp3s

18.12.2016 - Lesezeit: ~1 Minute

Aus der Musiksammlung im Verzeichnis PATH werden 100 zufällige Titel abgespielt.

Als MP3-Player dient mpg123 (der natürlich vorher installiert werden muss)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
import os
from glob import glob
import random
import subprocess

PATH = '/wnfdaten/Musik/'

def playMp3(path):
    subprocess.Popen(['mpg123', '-q', path]).wait()

def allMp3s():
    print(PATH) 
    result = [y for x in os.walk(PATH) for y in glob(os.path.join(x[0], '**/*.mp3'))]
    return result

def main():
    alle = allMp3s()
    anz=0
    while anz<100:
        dn=random.choice(alle)
        print(anz,dn)
        playMp3(dn)
        anz = anz +1
    return anz

if __name__ == '__main__':
    main()
Tags: Python Linux-Scripte mp3

Auf dem QL-570 unter PyQT drucken

26.07.2015 - Lesezeit: 2 Minuten

Literatur:

So funktioniert es: handleQL570

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from PyQt4 import QtGui, QtCore

class Window(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.setWindowTitle(self.tr('Document Printer'))
        self.editor = QtGui.QTextEdit(self)
        self.editor.textChanged.connect(self.handleTextChanged)
        self.buttonQL570 = QtGui.QPushButton('QL-570', self)
        self.buttonQL570.clicked.connect(self.handleQL570)
        self.buttonPrint = QtGui.QPushButton('Print', self)
        self.buttonPrint.clicked.connect(self.handlePrint)
        self.buttonPreview = QtGui.QPushButton('Preview', self)
        self.buttonPreview.clicked.connect(self.handlePreview)
        layout = QtGui.QGridLayout(self)
        layout.addWidget(self.editor, 0, 0, 1, 3)
        layout.addWidget(self.buttonQL570, 1, 0)
        layout.addWidget(self.buttonPrint, 1, 1)
        layout.addWidget(self.buttonPreview, 1, 2)
        self.beispielText()
        self.handleTextChanged()

    def beispielText(self):
        self.editor.clear()
        self.editor.setHtml(u'Vorname Name<br>Straße<br><strong>PLZ Ort</strong>')

    def handlePrint(self):
        dialog = QtGui.QPrintDialog()
        if dialog.exec_() == QtGui.QDialog.Accepted:
            self.editor.document().print_(dialog.printer())

    def handlePreview(self):
        dialog = QtGui.QPrintPreviewDialog()
        dialog.paintRequested.connect(self.editor.print_)
        dialog.exec_()

    def handleQL570(self):
        tp = QtGui.QPrinter()
        # Es muss natürlich einen eingerichteten Drucker  mit dem Namen geben
        tp.setPrinterName('QL-570')
        # Das Setzen der Papiergröße funktioniert nicht,
        # es wir die im Druckertreiber eingestellte Papiergröße verwendet
        # Ohne Wirkung: tp.setPaperSize( QtCore.QSizeF( 29, 62 ), QtGui.QPrinter.Millimeter )
        tp.setOrientation( QtGui.QPrinter.Landscape)
        tp.setPageMargins(2,2,2,2, QtGui.QPrinter.Millimeter) 
        self.editor.document().print_(tp)

    def handleTextChanged(self):
        enable = not self.editor.document().isEmpty()
        self.buttonPrint.setEnabled(enable)
        self.buttonPreview.setEnabled(enable)

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.resize(640, 480)
    window.show()
    sys.exit(app.exec_())
Tags: Python pyqt Etikettendrucker Brother QL-570