folgender Python 3 Code reagiert nur auf Änderungen an USB-Ports, wenn er nicht in einer virtuellen Umgebung (venv) ausgeführt wird. In meinem Fall wurde die virtuelle Umgebung von PyCharm eingerichtet und die Pakete `PyQt5` und `pyudev` zusätzlich installiert.
- Warum funktioniert die Erkennung auf Änderungen am USB-Port nicht in einer virtuellen Umgebung?
- Was muss man am Code (oder in PyCharm) ändern, damit die Erkennung auch in einer virtuellen Umgebung tut was sie soll?
Code: Alles auswählen
import sys
import pyudev
from PyQt5.QtWidgets import QApplication
from pyudev.pyqt5 import MonitorObserver
class USBDetector:
    def __init__(self):
        self._context = pyudev.Context()
        self._monitor = pyudev.Monitor.from_netlink(self._context)
        self._observer = MonitorObserver(self._monitor)
        self._monitor.start()
        for device in iter(self._monitor.poll, None):
            if device.action == 'add':
                # some function to run on insertion of usb
                print("Device added")
            elif device.action == 'remove':
                # some function to run on removal of usb
                print("Device removed")
def main():
    app = QApplication(sys.argv)
    usb_detector = USBDetector()
    sys.exit(app.exec_())
if __name__ == "__main__":
    main()
Atalanttore




