JMP 18.0 improved the package handling that was present in the Early Adopter (EA) releases. You can install most packages from within JMP from either the JSL environment or the Python environment. All methods are documented in the Scripting Index.
In the case of packages needing compilation, there is a workaround if jpip fails build and install into the JMP environment. In this case make sure you have the necessary development tools, Python 3.11.x from Python.org and Visual Studio or Xcode.
Do a normal
pip3.11 install package_name
If the package itself isn't broken this should compile the package locally.
Then with JMP run the jpip or Python Install Packages(); JMP will then pick up the locally built and cached version of the package and install into the JMP environment.
With a quick search there is a mysqlclient package which may require binary compilation, and a pure Python PyMySQL https://github.com/PyMySQL/PyMySQL package.
From JSL there are two commands
Python Install Packages("package_name");
and
Python Create JPIP CMD(); which creates a command line pip wrapper script jpip (or jpip.bat) in a location the user chooses with a directory picker dialog.
NOTE: if you use the command line jpip you should also add the --user flag to the install
jpip install --user some_package
From Python
import jmputils
jmputils.jpip('install', 'package_name')
# you can generate jpip from jmputils as well
jmputils.create_jpip(destination_path)