Path: csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: "Peter Heitzer" Newsgroups: de.comp.lang.python Subject: Re: pip install /wo/anders ? Date: 10 Nov 2021 13:49:44 GMT Lines: 84 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Trace: individual.net FyDtvZCCRAEvQkrb7QhF3gJd+xfGL7+A+ig0mZv9C/VS0WGLRdajMxFj0p X-Orig-Path: not-for-mail Cancel-Lock: sha1:GlQ9qFa2fSYULMPni7G1VQXZxFo= User-Agent: tin/2.4.3-20181224 ("Glen Mhor") (UNIX) (Linux/4.19.0-13-amd64 (x86_64)) Xref: csiph.com de.comp.lang.python:5758 Ulli Horlacher wrote: >(OS ist Ubuntu 18.04) >Mir gefaellt nicht, dass pip /usr/local/ vollkleistert, ich moechte das >unter /opt/pip/ haben. >Gefunden hab ich die --prefix Option, installieren klappt schon mal: >root@moep:~# pip3 install --prefix /opt/pip PySimpleGUIDesigner >Collecting PySimpleGUIDesigner > Using cached https://files.pythonhosted.org/packages/1e/bd/85cbde9056876f0d74889236fe2f3a2083d40bf807f10dadab774b989e0a/PySimpleGUIDesigner-0.1.4.7-py3-none-any.whl >Requirement already satisfied: PySide2>=5.13 in /usr/local/lib/python3.6/dist-packages (from PySimpleGUIDesigner) >Requirement already satisfied: PySimpleGUI in /usr/local/lib/python3.6/dist-packages (from PySimpleGUIDesigner) >Requirement already satisfied: click>=7.0 in /usr/local/lib/python3.6/dist-packages (from PySimpleGUIDesigner) >Requirement already satisfied: shiboken2==5.15.2 in /usr/local/lib/python3.6/dist-packages (from PySide2>=5.13->PySimpleGUIDesigner) >Requirement already satisfied: importlib-metadata; python_version < "3.8" in /usr/local/lib/python3.6/dist-packages (from click>=7.0->PySimpleGUIDesigner) >Requirement already satisfied: typing-extensions>=3.6.4; python_version < "3.8" in /usr/local/lib/python3.6/dist-packages (from importlib-metadata; python_version < "3.8"->click>=7.0->PySimpleGUIDesigner) >Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.6/dist-packages (from importlib-metadata; python_version < "3.8"->click>=7.0->PySimpleGUIDesigner) >Installing collected packages: PySimpleGUIDesigner >Successfully installed PySimpleGUIDesigner-0.1.4.7 >root@moep:~# du /opt/pip > 64 /opt/pip/lib/python3.6/site-packages/PySimpleGUIDesigner/__pycache__ > 208 /opt/pip/lib/python3.6/site-packages/PySimpleGUIDesigner > 28 /opt/pip/lib/python3.6/site-packages/PySimpleGUIDesigner-0.1.4.7.dist-info > 236 /opt/pip/lib/python3.6/site-packages > 236 /opt/pip/lib/python3.6 > 236 /opt/pip/lib > 4 /opt/pip/bin > 240 /opt/pip >Aber wie geht dann uninstall? >root@moep:~# pip3 uninstall --prefix /opt/pip PySimpleGUIDesigner >Usage: > pip uninstall [options] ... > pip uninstall [options] -r ... >no such option: --prefix >Auch der Aufruf klappt nicht: >framstag@moep:~: /opt/pip/bin/PySimpleGUIDesigner >Traceback (most recent call last): > File "/opt/pip/bin/PySimpleGUIDesigner", line 7, in > from PySimpleGUIDesigner.main import cli >ModuleNotFoundError: No module named 'PySimpleGUIDesigner' pip kennt nur die Standardorte für Packages. Wenn du andere Verzeichnisse verwendest, musst du das Python über die Environvariable PYTHONPATH mitteilen. Beispiel: pip3 install --prefix=$HOME/jodel PySimpleGUIDesigner Zum Deinstallieren: PYTHONPATH=$HOME/jodel/lib/python3.7/site-packages/ pip3 uninstall PySimpleGUIDesigner Uninstalling PySimpleGUIDesigner-0.1.4.7: Would remove: /localhome/ph/jodel/bin/PySimpleGUIDesigner /localhome/ph/jodel/lib/python3.7/site-packages/PySimpleGUIDesigner-0.1.4.7.dist-info/* /localhome/ph/jodel/lib/python3.7/site-packages/PySimpleGUIDesigner/* Proceed (y/n)? y Successfully uninstalled PySimpleGUIDesigner-0.1.4.7 pip wird dich auch darauf hingewiesen haben, daß es Binaries und Skripten in $prefix/bin installiert hat und dieses Verzeichnis nicht in $PATH ist. Das musst du also ebenfalls anpassen. Für dein Problem mit dem Dateiauswahldialog scheint es übrigens keine einfache und schöne Lösung zu geben. Die Klasse tkinter.filedialog.FileDialog hat kein natives Look and Feel wie filedialog.askopenfilename(). In tk gibt es nur entweder Dateiauswahl oder Verzeichnisauswahl und PySimpleGUI ruft nur die von tk zur Verfügung gestellten Funktionen auf. Du müsstest also deinen Fileselector komplett neu schreiben. Am einfachsten scheint mir dabei die Verwendung von tkinter.ttk.Treeview. Ob ein anderes Toolkit, z.B. gtk, einen passenden Dialog bietet, kann ich nicht sagen. Tkinter hat aber den Vorteil, daß es bei Python unter allen Plattformen verfügbar ist. -- Dipl.-Inform(FH) Peter Heitzer, peter.heitzer@rz.uni-regensburg.de