Each Answer to this Q is separated by one/two green lines.
I successfully built/installed NumPy on my mac os x for python 2.7.3.
Now I would like to build/install scipy as well. I downloaded it from git hub.
Went into the directory. Ran python setup.py build and it seemed to be working until it came across this error:
customize Gnu95FCompiler Could not locate executable gfortran Could not locate executable f95 customize NAGFCompiler customize AbsoftFCompiler Could not locate executable f90 Could not locate executable f77 customize IBMFCompiler Could not locate executable xlf90 Could not locate executable xlf customize IntelFCompiler Could not locate executable ifort Could not locate executable ifc customize GnuFCompiler Could not locate executable g77 customize G95FCompiler Could not locate executable g95 customize PGroupFCompiler Could not locate executable pgfortran don't know how to compile Fortran code on platform 'posix' building 'dfftpack' library error: library dfftpack has Fortran sources but no Fortran compiler found
I thought that I had Fortran installed for NumPy…guess not? How would I download it?
Your problem is that you need to install a Fortran compiler to build
Also, if you already have a
numpy that’s built with Fortran support disabled, you may have to replace it. Some of Apple’s pre-installed Python versions have such a
numpy build pre-installed.
The easiest way to get Fortran is with Homebrew. As the docs say, you need to install Xcode and its Command Line Tools first. (The way to install the Command Line Tools changes with almost each major version of Xcode, so see the linked docs for an up-to-date explanation.) Then install Homebrew. The installation URL has changed a few times, so see the Homebrew home page or installation instructions(http://brew.sh/), but it will be something like:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install gcc
(Note that until some time in 2014,
gfortran was a separate recipe from
gcc, so the command was
brew install gfortran. But if you try that now, you’ll get an error saying “GNU Fortran is now provided as part of GCC, and can be installed with:
brew install gcc“.)
You really want to use
pip to install
scipy, so if you don’t have that, get it first. Apple’s pre-installed Python, at least in 10.7 and 10.8, includes
easy_install but not
pip, so the easiest way to do that is:
sudo easy_install pip
However, you may want to consider using a
virtualenv instead of a global install (in which case you also want to remove the
sudo on the following commands).
Now that you’ve got
pip, all you have to do is this:
sudo pip install --upgrade numpy sudo pip install scipy
The instructions above are for Apple’s pre-installed version(s) of Python. If you’re using a different version of Python, you really should consider not doing so. Keeping the paths, installed packages, etc. in sync is a nightmare. The exception to this is if you want a Python 3.x version, in which case installing it from python.org or Homebrew is perfectly reasonable. There will be no collisions, because
pip2.7, etc. will be for Apple’s Python;
pip3.3, etc. for the 3.x version.
If you already have
pip, but fear it may be out of date,
pip install --upgrade pip. (Besides the security and robustness benefits, this may save you a whole lot of time by making you compatible with binary wheels for some of the scientific stack or other modules.)
For most non-Apple Python installations (and maybe even Apple’s in 10.9 or 10.10; I haven’t checked), you should not use
pip. Follow the
pipinstall instructions. But first make sure you don’t already have it.
- If you’re using
venv, your virtual environments will already include
- Python 3.4 or later may (and will, if from a python.org installer) include a
pipbootstrap. If your 3.4+ doesn’t already have
pip, you may want to
python -m ensurepipto install it.
- Some third-party installs, like Homebrew or ActiveState, include
- If you’re using
For Python 3.3 or later, you may want to use the built-in
If you’re using MacPorts, Fink, gentoo-alt, etc., you should install the
scipypackage that comes with your package manager, and it will drag in whatever else it needs (maybe even including rebuilding Python and GCC).
Third-party binary installs like Enthought and ActiveState may already include
scipyand everything else you need. If not, the instructions are basically the same as above, but you’ll have to guess which steps to skip or follow, whether to
If you’re using a non-Apple build of Python 2.7, and you want to avoid the PATH problems, you have to do two things:
First, do not, ever, install any Python packages that include scripts or binaries (including
pip itself) in more than one Python. For example, if you install
ipython for both Apple 2.7 and Homebrew 2.7, both will attempt to create scripts named
/usr/local/bin/ipython-2.7. If you’re lucky, one install will fail. Otherwise, they’ll both succeed, one will end up overwriting the other, and you will have no way of running the overwritten version.
Second, make sure the path to the alternate Python’s scripts and binaries comes before Apple’s in the PATH. Depending on which alternate Python you’ve installed and which instructions you followed, this could be:
- something else
Whatever the path is, you need to edit your PATH variable.
If you want to affect GUI apps (and LaunchAgents, etc.), there is apparently no longer a supported way to do this, but the deprecated QA1067 does seem to still work in Lion. It’s also what the Homebrew FAQ and Python FAQ suggest.
If you only care about command-line sessions (both Terminal.app and remote ssh), you can instead just do the standard Unix thing of editing the appropriate profile file. Which profile file is appropriate depends on what you want to affect. (All users or just one user? bash or any shell? And so on.) If you don’t know which one you want, you really should do some research. If you don’t want to bother learning, just do
~/.profile and then don’t complain if it wasn’t what you wanted.
Either way, you need to make sure that the appropriate path comes before
/usr/bin in the PATH. So, for example, you could add the following to
PATH=/usr/local/bin:$PATH export PATH
(You will of course need to either create a new Terminal shell, or source the script, before it takes effect.)
If you’re using
brew doctor will tell you if you got it right.
It looks like your actual problem was just an intermittent download failure from Sourceforge:
curl: (33) HTTP server doesn't seem to support byte ranges. Cannot resume. Error: Download failed: downloads.sf.net/project/machomebrew/Bottles/…
Homebrew should just recover automatically from this error if you try
brew install gfortran again. So, that’s the first thing to try.
If that doesn’t work, see if
brew doctor finds any problems, then
brew install -d gfortran to see where it’s storing the partially-downloaded file so you can delete it manually and try again.
If all else fails, you can force it to not use the bottle by using
--build-from-source. Of course building from source takes a lot longer than installing a binary bottle, but it should give the same result.
As of 5/20/2014, if you’re using brew, Fortran is installed as part of gcc. There is no separate Fortran package required. Here’s what worked for me to install numpy:
- install brew, as per abamert’s answer (or see http://brew.sh/ )
- install gcc (
brew install gcc)
- confirm that brew’s gcc is the correct one (
which gccshould point to /usr/local/bin/gcc )
export ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future(see Problems with pip install numpy – RuntimeError: Broken toolchain: cannot link a simple C program )
pip install numpy
I don’t think this problem is too complicated at all.
1) Install pip
ln -s 2.7 Current
rm -f python
ln -s /Library/Frameworks/Python.framework/Versions/Current/bin/python python
2) download egg from https://pypi.python.org/pypi/setuptools#files
sudo sh setuptools-0.6c11-py2.7.egg
3) Simply download and install the gfotran from this link:
4) After that, you need to type:
sudo pip install -U scipy
sudo pip install -U numpy
sudo pip install -U matplotlib
Hopefully, you should have everything you want to have.
I met the same problem, using following steps:
1. brew install gfortran
2. pip install scipy
then it’s ok.
I had gfortran installed and the binary was gfortran-4.2. So, everytime I was trying to install SciPy the compiler couldn’t be found because it was trying to use gfortran.
What I did was create a symlink of gfortran-4.2 to gfortran.
To find where you should create the symlink run:
$ which gfortran-4.2 /usr/local/bin/gfortran-4.2
Then symlink it:
ln -s /usr/local/bin/gfortran-4.2 /usr/local/bin/gfortran
For OSX yosemite and possibly older osx releases too, you may want to download and install the fortran compiler before running
pip install scipy. To download the latest fortran compiler, just go to the following link:
I think your version of Xcode and OSX matter. I had Xcode: 6.4 and Os X 10.11.1 and was still getting the same error messages (could not locate gfortran, etc). I tried many things, including the thorough response by @abarnert, but the solution for me was upgraded Xcode (to 7.1.1).
i have homebree installed so I’m going to try: $brew install gfortran
hopefully this works
Here are detailed instructions for a clean install on OSX 10.7. If I were you, I’d go this route instead of trying to download and build the sources yourself.