I have a problem with running a python Hello World mpi4py code on a virtual machine.
The hello.py code is:
#!/usr/bin/python
#hello.py
from mpi4py import
I had the same issue when running the python module emcee. It would give me an error:
"ValueError: Tried to create an MPI pool, but there was only one MPI process available.
Need at least two."
The solution I found for my particular cluster was to use a different MPI. My code worked with intel-mpi and mpich2 but not openmpi. For this system, all I had to do was switch the MPI. In my PBS script I used module load mpich2 instead of module load openmpi. In this case mpiexec and mpirun worked correctly.
As suggested above and in this question for C, this has to do with having mpirun coming from a different MPI than mpi4py was linked against.
In my case, and I suspect the same is true for many other Python users, this came from having originally installed mpi4py through conda, which pulled a non-system version of MPI into my conda -- i.e. which mpirun gave a path in my conda environment.
To solve the problem, I ran conda remove mpi4py and then pip install mpi4py, which seemed to rebuild mpi4py against the MPI in the conda environment and solved the issue.