Was hat diesen Wunschwunsch ausgelöst?I need to install Python packages in a custom directory on my machine (e.g., C:\lib_jmp_python) using the standard Windows PYTHONUSERBASE environment variable. Currently, if I run jmputils.jpip('install', 'package_name'), my system variable is completely ignored. The jmputils.py script hardcodes the installation paths by forcing its own site.USER_BASE and overwriting the subprocess environment. This makes it impossible to route packages to a custom local folder using standard Python OS variables; everything is forced into the default JMP AppData/ProgramData directories.
Welche Verbesserung würden Sie sich wünschen?I would like jmputils.py to respect the system's PYTHONUSERBASE variable if it is defined by the user, and only fall back to the default JMP paths if it is not set. Specifically, in the jpip() function, a simple conditional check could be added:
if 'PYTHONUSERBASE' in os.environ:
site.USER_BASE = os.environ['PYTHONUSERBASE']
elif site.USER_BASE is None:
site.getuserbase()
The exact same logic should be applied to the create_jpip() function when generating the jpip.bat script, replacing the currently hardcoded set PYTHONUSERBASE=%APPDATA%\JMP\JMP\Python with a dynamic check.
Warum ist diese Idee wichtig? Sie ist äußerst wertvoll für Anwender und IT-Administratoren, die eine strenge Kontrolle über ihre Python-Umgebungen benötigen. Anwender können damit potenziell große Python-Pakete auf bestimmte Laufwerke oder benutzerdefinierte Verzeichnisse umleiten, ohne die isolierte Umgebung von JMP zu beeinträchtigen. Letztendlich gleicht sie die Python-Integration von JMP an das Standardverhalten von Python an und reduziert so Reibungsverluste und Verwirrung für Entwickler, die ihre Pakete effizient verwalten möchten.
@guillaumebugnon - Danke für die Einreichung des Wunsches.
@guillamebugnon – Ich möchte Ihnen einige Informationen eines Entwicklers bezüglich dieses Wunsches und der kommenden JMP-Version 20 weitergeben:
In JMP Version 20 läuft Python nun im isolierten Modus, um ein einheitliches Verhalten in den verschiedenen Benutzerumgebungen zu gewährleisten. Dies hat zur Folge, dass das eingebettete Python nun alle PYTHON*-Umgebungsvariablen ignoriert.
JMP Version 20 EA 1 und neuer unterstützt virtuelle Python-Umgebungen (venv). Unter JMP → Einstellungen → Python finden Sie ein Fenster mit Optionen zum Erstellen und Auswählen virtueller Umgebungen als Alternative zur standardmäßigen Site-Package-Umgebung. Die venv muss von JMP erstellt werden. Sie muss auf die von JMP bereitgestellten Python-Bibliotheken verweisen, nicht auf die einer externen Python-Installation. Die virtuelle Umgebung kann an einem beliebigen Ort im Dateisystem oder auf einem Netzlaufwerk abgelegt werden. Die Auswahl der virtuellen Umgebung erfolgt über einen Verzeichnisauswahldialog, der ebenfalls an einem beliebigen Ort im Dateisystem gespeichert werden kann.
Nach der Erstellung kann die virtuelle Umgebung (venv) wie jede andere Python-Umgebung über das Terminal genutzt werden. Dies umfasst die Aktivierung über die Kommandozeile und die direkte Verwendung von pip innerhalb der venv-Umgebung anstelle von jpip innerhalb von JMP. Externe Skripte können die von JMP erstellte venv befüllen oder die Umgebung nutzen. Der Zugriff auf das jmp -Paket ist jedoch nur innerhalb einer laufenden JMP-Instanz möglich.
Ich empfehle Ihnen, die aktuelle JMP EA-Version herunterzuladen und sie auszuprobieren.
Hallo @scott_allen ,
Ich werde mir JMP EA und venv ansehen.
Danke