-
Notifications
You must be signed in to change notification settings - Fork 160
Installing pyenv
Connor Ward edited this page Oct 6, 2023
·
4 revisions
It can be helpful to install Firedrake using a Python executable installed with pyenv rather than a system provided version. This is because:
- When the system Python bumps a minor version (e.g. 3.10 -> 3.11) the Firedrake virtual environment will still work.
- MacOS ships with a broken Python installation and the homebrew version also does not always work.
To install pyenv (assuming MacOS with homebrew installed) one needs to:
- Install build dependencies
- Install pyenv. Note that the pyenv provided by homebrew should not be installed. At the time of writing it unconditionally injects
CFLAGS
andLDFLAGS
that will break components like petsc4py and mpi4py if you have a homebrew-installed OpenMPI. - Set
PYENV_ROOT
andPATH
$ export PYENV_ROOT=$HOME/.pyenv $ export PATH=$PYENV_ROOT/bin:$PATH
- Initialise the shell
Note that this command is optional. One can instead find the installed Python versions under
$ eval "$(pyenv init -)"
$(pyenv root)/versions
. See here for more information. - Install a Python version (here 3.11)
$ pyenv install 3.11
- Set this Python as the default for this shell (only if using
pyenv init
)$ pyenv shell 3.11
- Run
firedrake-install
,python
will resolve to the correct executable$ python firedrake-install <args>
Note that the above instructions are equivalent to those found here.
You might also find it helpful to install the Firedrake virtual environment in such a way that pyenv can easily find it.
You can do that by adding an argument to the install script:
$ python firedrake-install <args> --venv-name=$(pyenv root)/versions/firedrake
After the installation succeeds, you can activate the Firedrake virtual environment with pyenv shell firedrake
.
Building locally
Tips
- Running Firedrake tests with different subpackage branches
- Modifying and Rebuilding PETSc and petsc4py
- Vectorisation
- Debugging C kernels with
lldb
on MacOS - Parallel MPI Debugging with
tmux-mpi
,pdb
andgdb
- Parallel MPI Debugging with VSCode and
debugpy
- Modifying generated code
- Kernel profiling with LIKWID
- breakpoint() builtin not working
- Debugging pytest with multiple processing
Developers Notes
- Upcoming meeting 2024-08-21
- 2024-08-07
- 2024-07-24
- 2024-07-17
- 2024-07-10
- 2024-06-26
- 2024-06-19
- 2024-06-05
- 2024-05-29
- 2024-05-15
- 2024-05-08
- 2024-05-01
- 2024-04-28
- 2024-04-17
- 2024-04-10
- 2024-04-03
- 2024-03-27
- 2024-03-20
- 2024-03-06
- 2024-02-28
- 2024-02-28
- 2024-02-21
- 2024-02-14
- 2024-02-07
- 2024-01-31
- 2024-01-24
- 2024-01-17
- 2024-01-10
- 2023-12-13
- 2023-12-06
- 2023-11-29
- 2023-11-22
- 2023-11-15
- 2023-11-08
- 2023-11-01
- 2023-10-25
- 2023-10-18
- 2023-10-11
- 2023-10-04
- 2023-09-27
- 2023-09-20
- 2023-09-06
- 2023-08-30
- 2023-08-23
- 2023-07-12
- 2023-07-05
- 2023-06-21
- 2023-06-14
- 2023-06-07
- 2023-05-17
- 2023-05-10
- 2023-03-08
- 2023-02-22
- 2023-02-15
- 2023-02-08
- 2023-01-18
- 2023-01-11
- 2023-12-14
- 2022-12-07
- 2022-11-23
- 2022-11-16
- 2022-11-09
- 2022-11-02
- 2022-10-26
- 2022-10-12
- 2022-10-05
- 2022-09-28
- 2022-09-21
- 2022-09-14
- 2022-09-07
- 2022-08-25
- 2022-08-11
- 2022-08-04
- 2022-07-28
- 2022-07-21
- 2022-07-07
- 2022-06-30
- 2022-06-23
- 2022-06-16
- 2022-05-26
- 2022-05-19
- 2022-05-12
- 2022-05-05
- 2022-04-21
- 2022-04-07
- 2022-03-17
- 2022-03-03
- 2022-02-24
- 2022-02-10
- 2022-02-03
- 2022-01-27
- 2022-01-20
- 2022-01-13
- 2021-12-15
- 2021-12-09
- 2021-11-25
- 2021-11-18
- 2021-11-11
- 2021-11-04
- 2021-10-28
- 2021-10-21
- 2021-10-14
- 2021-10-07
- 2021-09-30
- 2021-09-23
- 2021-09-09
- 2021-09-02
- 2021-08-26
- 2021-08-18
- 2021-08-11
- 2021-08-04
- 2021-07-28
- 2021-07-21
- 2021-07-14
- 2021-07-07
- 2021-06-30
- 2021-06-23
- 2021-06-16
- 2021-06-09
- 2021-06-02
- 2021-05-19
- 2021-05-12
- 2021-05-05
- 2021-04-28
- 2021-04-21
- 2021-04-14
- 2021-04-07
- 2021-03-17
- 2021-03-10
- 2021-02-24
- 2021-02-17
- 2021-02-10
- 2021-02-03
- 2021-01-27
- 2021-01-20
- 2021-01-13
- 2021-01-06