¿Qué inspiró esta petición en la lista de deseos?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.
¿Qué mejora le gustaría ver?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.
¿Por qué es importante esta idea? Es sumamente valiosa para usuarios y administradores de TI que necesitan un control estricto sobre sus entornos Python. Permite a los usuarios dirigir paquetes Python, potencialmente grandes, a unidades específicas o directorios personalizados sin alterar el entorno aislado de JMP. En definitiva, alinea la integración de Python de JMP con el comportamiento estándar de Python, reduciendo la fricción y la confusión para los desarrolladores que intentan gestionar sus paquetes de forma eficiente.
@guillaumebugnon - Gracias por enviar el deseo.
@guillamebugnon - Me gustaría compartir información de un desarrollador sobre este deseo y la próxima versión 20 de JMP:
La versión 20 de JMP ejecuta Python en modo aislado para garantizar un comportamiento uniforme en los distintos entornos de usuario. Esto implica que el Python integrado ignora todas las variables de entorno PYTHON*.
JMP versión 20 EA 1 y posteriores incluyen soporte para entornos virtuales Python venv. En JMP->Preferencias->Python hay un panel que presenta opciones para crear y seleccionar entornos virtuales creados como alternativas al entorno de paquete de sitio predeterminado. El entorno virtual debe ser creado por JMP. El entorno virtual debe apuntar a las bibliotecas compartidas de Python proporcionadas por JMP, no a las de una instalación externa de Python. El entorno virtual creado puede ubicarse en cualquier lugar del sistema de archivos o unidad compartida. La selección del entorno virtual, mediante un cuadro de diálogo de selección de archivos de directorio, también puede residir en cualquier lugar del sistema de archivos.
Una vez creado, el entorno virtual (venv) se puede utilizar desde la terminal como cualquier otro entorno virtual de Python. Esto incluye activarlo desde la línea de comandos y usar pip directamente dentro del entorno virtual en lugar de usar jpip desde JMP. Una vez creado por JMP, los scripts externos pueden poblar el entorno virtual o utilizarlo. Sin embargo, el acceso para importar el paquete jmp solo está disponible dentro de una instancia de JMP en ejecución.
Te animo a descargar la versión actual de JMP EA y a probarla.
Hola @scott_allen ,
Voy a echar un vistazo a JMP EA y venv.
Gracias