A simple package manager for Matlab (inspired by pip). Downloads packages from Matlab Central’s File Exchange, GitHub repositories, or any other url pointing to a .zip file.
Download/clone this repo and add it to your Matlab path (using addpath
). Now try the following:
mpi install [package-name]
: install package by namempi uninstall [package-name]
: remove package, if installedmpi search [package-name]
: search for package given name (checks Github and Matlab File Exchange)mpi freeze
: lists all packages currently installedmpi init
: adds all installed packages to path (run when Matlab starts up)By default, mpi installs all Matlab packages to the directory mpi-packages/
. (You can edit mpi_config.m
to specify a custom default installation directory.)
If you restart Matlab, you’ll want to run mpi init
to re-add all the folders in the installation directory to your Matlab path. Better yet, just run mpi init
from your Matlab startup script.
Install (searches FileExchange and Github):
>> mpi install export_fig
When installing, mpi checks for a file in the package called install.m
, which it will run after confirming (or add --force
to auto-confirm). It also checks for a file called pathlist.m
which tells it which paths (if any) to add.
Install a Github release (by tag, branch, or commit)
By tag:
>> mpi install matlab2tikz -t 1.0.0
By branch:
>> mpi install matlab2tikz -t develop
By commit:
>> mpi install matlab2tikz -t ca56d9f
Uninstall
>> mpi uninstall matlab2tikz
When uninstalling, mpi checks for a file in the package called uninstall.m
, which it will run after confirming (or add --force
to auto-confirm).
Search without installing:
>> mpi search export_fig
Install from a url:
>> mpi install covidx -u https://www.mathworks.com/matlabcentral/fileexchange/76213-covidx
OR:
>> mpi install export_fig -u https://github.com/altmany/export_fig.git
(Note that when specifying Github repo urls you must add the ‘.git’ to the url.)
Install local package:
>> mpi install my_package -u path/to/package --local
The above will copy path/to/package
into the default install directory. To skip the copy, add -e
to the above command.
Overwrite existing packages:
>> mpi install matlab2tikz --force
Install/uninstall packages in a specific directory:
>> mpi install matlab2tikz -d /Users/mobeets/mypath
Note that the default installation directory is mpi-packages/
.
mpi has rudimentary support for managing collections of packages. To specify which collection to act on, use -c [collection_name]
. Default collection is “default”.
>> mpi install cbrewer -c test
Using collection "test"
Collecting 'cbrewer'...
Found url: https://www.mathworks.com/matlabcentral/fileexchange/58350-cbrewer2?download=true
Downloading https://www.mathworks.com/matlabcentral/fileexchange/58350-cbrewer2?download=true...
>> mpi init -c test
Using collection "test"
Adding to path: /Users/mobeets/code/mpi/mpi-packages/mpi-collections/test/cbrewer
Added paths for 1 package(s).
>> mpi install -i /Users/mobeets/example/requirements.txt
Specifying a requirements file lets you install or search for multiple packages at once. See ‘requirements-example.txt’ for an example. Make sure to provide an absolute path to the file!
To automatically confirm installation without being prompted, set --approve
. Note that this is only available when installing packages from file.
mpm
to mpi
mpi was previously known as “mpm”. (We had to change the name because Matlab started using “mpm” as a way of installing Matlab toolboxes.)
One way of transitioning from (our) mpm
to mpi
is to simply reinstall all packages/collections using mpi
, which will use the new default installation path in mpi-packages/
. Alternatively, point mpi
to the folder containing any previously installed packages by changing mpi-packages
to mpm-packages
in mpi_config.m
.
Because there’s no standard directory structure for a Matlab package, automatically adding paths can get a bit messy. When mpi downloads a package, it adds a single folder within that package to your Matlab path. If there are no *.m
files in the package’s base directory, it looks in folders called ‘bin’, ‘src’, ‘lib’, or ‘code’ instead. You can specify the name of an internal directory by passing in an -n
or internaldir
argument. To install a package without modifying any paths, set --nopaths
. Or to add all subfolders in a package to the path, set --allpaths
.
mpi keeps track of the packages it’s downloaded in a file called mpi.mat
, within each installation directory.
mpi should work cross-platform on versions Matlab 2014b and later. Also note that, starting with Matlab 2022, you may see a warning when using mpi, as Matlab includes a built-in command of the same name (used for installing Matlab products). You may need to rename the file mpi.m
to something else, and then rename the function name on line 1 of this file to match, as well as the line containing “help mpi”.