Cosa ha ispirato questa richiesta nella lista dei desideri?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.
Quale miglioramento vorresti vedere?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.
Perché questa idea è importante? È estremamente utile per gli utenti e gli amministratori IT che necessitano di un controllo rigoroso sui propri ambienti Python. Consente agli utenti di instradare pacchetti Python potenzialmente di grandi dimensioni verso unità specifiche o directory personalizzate senza compromettere l'ambiente isolato di JMP. In definitiva, allinea l'integrazione di JMP con Python ai comportamenti standard di Python, riducendo attriti e confusione per gli sviluppatori che cercano di gestire i propri pacchetti in modo efficiente.
@guillaumebugnon - Grazie per aver inviato il desiderio.
@guillamebugnon - Vorrei condividere alcune informazioni da uno sviluppatore riguardo a questo desiderio e alla prossima versione 20 di JMP:
Nella versione 20 di JMP, Python viene ora eseguito in modalità isolata per garantire un comportamento coerente nei diversi ambienti utente. Di conseguenza, Python integrato ignora tutte le variabili d'ambiente PYTHON*.
JMP versione 20 EA 1 e successive includono il supporto per gli ambienti virtuali Python venv. In JMP->Preferenze->Python è presente un pannello che offre opzioni per creare e selezionare gli ambienti virtuali creati come alternative all'ambiente predefinito site-package. L'ambiente virtuale deve essere creato da JMP. L'ambiente virtuale deve puntare alle librerie condivise Python fornite da JMP, non a quelle di un'installazione Python esterna. L'ambiente virtuale creato può essere posizionato ovunque nel filesystem o nell'unità condivisa. La selezione dell'ambiente virtuale, tramite una finestra di dialogo per la selezione della directory, può anch'essa trovarsi in qualsiasi posizione del filesystem.
Una volta creato, l'ambiente virtuale (venv) può essere utilizzato dal terminale come qualsiasi altro ambiente virtuale Python. Ciò include l'attivazione dell'ambiente virtuale dalla riga di comando e l'utilizzo diretto di pip all'interno dell'ambiente virtuale stesso, anziché utilizzare jpip tramite JMP. Una volta creato da JMP, script esterni possono popolare l'ambiente virtuale o utilizzarlo. Tuttavia, l'accesso al pacchetto jmp per l'importazione è disponibile solo all'interno di un'istanza di JMP in esecuzione.
Vi incoraggio a scaricare la versione EA di JMP e a provarla.
Ciao @scott_allen ,
Darò un'occhiata a JMP EA e venv.
Grazie