A small, complete example of the issue

Setup

% virtualenv venv
New python executable in venv/bin/python2.7
Also creating executable in venv/bin/python
Installing setuptools, pip, wheel...done.
% . venv/bin/activate
% pip list           
You are using pip version 7.0.3, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
pip (7.0.3)
setuptools (17.0)
wheel (0.24.0)
hpeters@MAC-025s-MacBook-Pro-2 /tmp % pip install -U pip setuptools wheel
You are using pip version 7.0.3, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting pip
  Using cached pip-9.0.1-py2.py3-none-any.whl
Collecting setuptools
  Using cached setuptools-28.8.0-py2.py3-none-any.whl
Collecting wheel
  Using cached wheel-0.29.0-py2.py3-none-any.whl
Installing collected packages: pip, setuptools, wheel
  Found existing installation: pip 7.0.3
    Uninstalling pip-7.0.3:
      Successfully uninstalled pip-7.0.3
  Found existing installation: setuptools 17.0
    Uninstalling setuptools-17.0:
      Successfully uninstalled setuptools-17.0
  Found existing installation: wheel 0.24.0
    Uninstalling wheel-0.24.0:
      Successfully uninstalled wheel-0.24.0
Successfully installed pip-9.0.1 setuptools-28.8.0 wheel-0.29.0

The issue

One cannot use pip wheel to build pandas 0.19.0 and higher:

% pip wheel "pandas==0.19.0" --no-binary :all:
Collecting pandas==0.19.0
  Using cached pandas-0.19.0.tar.gz
Collecting python-dateutil (from pandas==0.19.0)
  Using cached python-dateutil-2.6.0.tar.gz
Collecting pytz>=2011k (from pandas==0.19.0)
  Using cached pytz-2016.7.zip
Collecting numpy>=1.7.0 (from pandas==0.19.0)
  Using cached numpy-1.11.2.tar.gz
Collecting six>=1.5 (from python-dateutil->pandas==0.19.0)
  Using cached six-1.10.0.tar.gz
Building wheels for collected packages: pandas, python-dateutil, pytz, numpy, six
  Running setup.py bdist_wheel for pandas ... error
  Complete output from command /private/tmp/venv/bin/python2.7 -u -c "import setuptools, tokenize;__file__='/private/var/folders/kn/3fznwwr15z9chdd30p3q4qm80000gp/T/pip-build-RJ3_w0/pandas/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /var/folders/kn/3fznwwr15z9chdd30p3q4qm80000gp/T/tmpVWnJJSpip-wheel-:
  running bdist_wheel
  running build
......
  running build_ext
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "/private/var/folders/kn/3fznwwr15z9chdd30p3q4qm80000gp/T/pip-build-RJ3_w0/pandas/setup.py", line 680, in <module>
      **setuptools_kwargs)
    File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 151, in setup
      dist.run_commands()
    File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands
      self.run_command(cmd)
    File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
      cmd_obj.run()
    File "/private/tmp/venv/lib/python2.7/site-packages/wheel/bdist_wheel.py", line 179, in run
      self.run_command('build')
    File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command
      self.distribution.run_command(command)
    File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
      cmd_obj.run()
    File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/command/build.py", line 127, in run
      self.run_command(cmd_name)
    File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command
      self.distribution.run_command(command)
    File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
      cmd_obj.run()
    File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/command/build_ext.py", line 339, in run
      self.build_extensions()
    File "/private/var/folders/kn/3fznwwr15z9chdd30p3q4qm80000gp/T/pip-build-RJ3_w0/pandas/setup.py", line 371, in build_extensions
      build_ext.build_extensions(self)
    File "/private/var/folders/kn/3fznwwr15z9chdd30p3q4qm80000gp/T/pip-build-RJ3_w0/pandas/setup.py", line 129, in build_extensions
      raise ImportError('Building pandas requires cython')
  ImportError: Building pandas requires cython

  ----------------------------------------
  Failed building wheel for pandas
  Running setup.py clean for pandas
  Running setup.py bdist_wheel for python-dateutil ... done
  Stored in directory: /private/tmp
  Running setup.py bdist_wheel for pytz ... done
  Stored in directory: /private/tmp
  Running setup.py bdist_wheel for numpy ... |^error
  Failed building wheel for numpy
  Running setup.py clean for numpy
^C  Failed cleaning build dir for numpy
  Running setup.py bdist_wheel for six ... done
  Stored in directory: /private/tmp
Successfully built python-dateutil pytz six
Failed to build pandas numpy
ERROR: Failed to build one or more wheels

Expected Output

With pandas 0.18 it is possible to build a wheel using pip wheel

% pip wheel "pandas==0.18.0" --no-binary :all:
Collecting pandas==0.18.0
  Downloading pandas-0.18.0.tar.gz (7.1MB)
    100% |################################| 7.1MB 169kB/s 
Collecting python-dateutil (from pandas==0.18.0)
  Downloading python-dateutil-2.6.0.tar.gz (258kB)
    100% |################################| 266kB 3.2MB/s 
Collecting pytz>=2011k (from pandas==0.18.0)
  Downloading pytz-2016.7.zip (497kB)
    100% |################################| 501kB 2.3MB/s 
Collecting numpy>=1.7.0 (from pandas==0.18.0)
  Using cached numpy-1.11.2.tar.gz
Collecting six>=1.5 (from python-dateutil->pandas==0.18.0)
  Downloading six-1.10.0.tar.gz
Building wheels for collected packages: pandas, python-dateutil, pytz, numpy, six
  Running setup.py bdist_wheel for pandas ... done
....
Successfully built pandas python-dateutil pytz numpy six

Discussion

I believe that this is due to Pandas not spelling out all of its build-time-requirements (like Cython) in the setup_requires section.

Comment From: jreback

this was already fixed with 0.19.1 see #14204