Nessun modulo denominato 'pandas'Sto eseguendo uno script JSL in JMP 18 che usa Python. Su macOS funziona tutto correttamente, ma su Windows ricevo questo errore:
Traceback (most recent call last):
File "
", line 7, in
ModuleNotFoundError: No module named 'pandas'
In the embedded log is see following:
Creating: C:\\Users\\Admin\\AppData\\Roaming\\JMP\\JMP\\Python\\Python311\\site-packages
This tells me that JMP 18 doesn't install python automatically. Is there a pre-requisite for python be installed?
I am also trying to install this way to ensure the script doesn't fail irrespective of the system:
Python Submit("
import jmputils
required_packages = ['pandas', 'numpy']
# get list of installed python packages
installed = jmputils.jpip('list')
# check & install missing packages
for pkg in required_packages:
if pkg.lower() not in [p.lower() for p in installed]:
print(f'{pkg} not installed — installing...')
jmputils.jpip('install', pkg)
else:
print(f'{pkg} is already installed.')
jmputils.jpip('list')
");
Automazione e scriptingRe: Nessun modulo denominato 'pandas'A mia conoscenza, in JMP18 quella cartella viene aggiunta quando Python viene "eseguito" per la prima volta e puoi forzarla eseguendo qualcosa come
Python Submit("import jmp");
nell'editor di script JMP
Re: Nessun modulo denominato 'pandas'Un messaggio di errore da Python è un chiaro segnale che Python è installato ; )
per installare i pacchetti Python da JSL, utilizzare:
Python Install Packages( "numpy pandas" );

Re: Nessun modulo denominato 'pandas'Grazie, sì, ha creato la directory python e alcuni pacchetti. Di seguito:
Python Submit("
import jmputils
required = ['pandas', 'numpy']
# Get installed packages safely
installed = jmputils.jpip('list')
if installed is None:
installed = []
print('Installed packages:', installed)
# Install missing ones
for pkg in required:
if pkg.lower() not in [p.lower() for p in installed]:
print(f'{pkg} not installed — installing...')
jmputils.jpip('install', pkg)
else:
print(f'{pkg} already installed.')
import pandas as pd
import numpy as np
print('pandas and numpy imported successfully!')
");
Re: Nessun modulo denominato 'pandas'sì, questo mi ha aiutato a garantire che la cartella venisse aggiunta. Grazie
Re: Nessun modulo denominato 'pandas'L'utilizzo di tale importazione è uno dei controlli che utilizziamo nelle nostre applicazioni JMP-Python per assicurarci che tutto sia stato impostato.
Sono ancora restio a usare JMP19 per diverse ragioni, ma renderà più semplice l'integrazione tra JMP e Python. Se non ricordo male, in JMP19 non sarà necessario, ma non l'ho verificato. JMP19 renderà anche più facile verificare se i pacchetti sono stati installati, poiché jmputils ottiene il metodo "is_installed".
Re: Nessun modulo denominato 'pandas'In JMP 18, la decompressione del file site-packages.zip e la creazione della directory venivano eseguite dallo script jsite.py. JMP 19 esegue questa operazione internamente nel codice C++ al primo avvio di Python. Lo script jsite.py esiste ancora come backup per quando gli script della riga di comando jpip.bat o jpip shell vengono generati da Python Create JPIP CMD(). Oppure, l'equivalente Python jmputils.create_jpip( dest_path ) .
JMP 19 migliora la gestione dei pacchetti tramite script aggiungendo jmputils.is_installed( 'package_name' ), jmptuils.package_version( 'package_name' ) e pkg_dict = jmputils.packages(). Queste aggiunte tardive alla versione 19.0 sono presenti, ma non documentate nell'indice degli script. Gli aggiornamenti successivi contengono esempi nell'indice degli script.