Failed to Build Pillow

Failed to Build Pillow

I'm using Kubuntu 16.04. I'm trying to install the TFLearn library, but it requires Pillow, which it tried to install but was failing. Installing Pillow on its own also doesn't work.

daniel@beepboop:~$ pip install Pillow
Collecting Pillow
  Using cached Pillow-3.2.0.zip
Building wheels for collected packages: Pillow
  Running setup.py bdist_wheel for Pillow ... error
  Complete output from command /usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-jRpryD/Pillow/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" bdist_wheel -d /tmp/tmp1OrE0Epip-wheel- --python-tag cp27:
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-2.7
  creating build/lib.linux-x86_64-2.7/PIL
  copying PIL/XVThumbImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/PngImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/WebPImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/XbmImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ImageQt.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/TarIO.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ImageCms.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/SpiderImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/GbrImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/FpxImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/WmfImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/PcfFontFile.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ImageColor.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/Jpeg2KImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/__init__.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/Hdf5StubImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/GimpGradientFile.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/MicImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/PcxImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/IptcImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/IcoImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/features.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ImagePalette.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/PSDraw.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/_binary.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/JpegPresets.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/BmpImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ImagePath.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/GdImageFile.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/PpmImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ImageSequence.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/FliImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/BufrStubImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/_util.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/PyAccess.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/OleFileIO.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/PdfImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ImageWin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/Image.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/TgaImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ImageGrab.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/GimpPaletteFile.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/XpmImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/McIdasImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/PaletteFile.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ImageFont.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/PixarImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ImageFile.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/GifImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/DcxImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ImageTransform.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/GribStubImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/JpegImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/WalImageFile.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/PsdImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/FontFile.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/MpegImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/TiffImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/PcdImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/IcnsImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ImageEnhance.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ImageOps.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ImageTk.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/SgiImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ExifTags.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/MpoImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ImtImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/EpsImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/DdsImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/PalmImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/SunImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ContainerIO.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/BdfFontFile.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ImageDraw2.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ImImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/FtexImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ImageShow.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ImageMorph.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/CurImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/MspImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ImageFilter.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ImageMath.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/TiffTags.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ImageDraw.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ImageStat.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ImageChops.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/ImageMode.py -> build/lib.linux-x86_64-2.7/PIL
  copying PIL/FitsStubImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
  running egg_info
  writing Pillow.egg-info/PKG-INFO
  writing top-level names to Pillow.egg-info/top_level.txt
  writing dependency_links to Pillow.egg-info/dependency_links.txt
  warning: manifest_maker: standard file '-c' not found

  reading manifest file 'Pillow.egg-info/SOURCES.txt'
  reading manifest template 'MANIFEST.in'
  warning: no files found matching '*.sh'
  no previously-included directories found matching 'docs/_static'
  warning: no previously-included files found matching '.coveragerc'
  warning: no previously-included files found matching '.editorconfig'
  warning: no previously-included files found matching '.landscape.yaml'
  warning: no previously-included files found matching 'appveyor.yml'
  warning: no previously-included files found matching 'build_children.sh'
  warning: no previously-included files found matching 'tox.ini'
  warning: no previously-included files matching '.git*' found anywhere in distribution
  warning: no previously-included files matching '*.pyc' found anywhere in distribution
  warning: no previously-included files matching '*.so' found anywhere in distribution
  writing manifest file 'Pillow.egg-info/SOURCES.txt'
  copying PIL/OleFileIO-README.md -> build/lib.linux-x86_64-2.7/PIL
  running build_ext
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "/tmp/pip-build-jRpryD/Pillow/setup.py", line 767, in <module>
      zip_safe=not debug_build(), )
    File "/usr/lib/python2.7/distutils/core.py", line 151, in setup
      dist.run_commands()
    File "/usr/lib/python2.7/distutils/dist.py", line 953, in run_commands
      self.run_command(cmd)
    File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
      cmd_obj.run()
    File "/usr/lib/python2.7/dist-packages/wheel/bdist_wheel.py", line 179, in run
      self.run_command('build')
    File "/usr/lib/python2.7/distutils/cmd.py", line 326, in run_command
      self.distribution.run_command(command)
    File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
      cmd_obj.run()
    File "/usr/lib/python2.7/distutils/command/build.py", line 128, in run
      self.run_command(cmd_name)
    File "/usr/lib/python2.7/distutils/cmd.py", line 326, in run_command
      self.distribution.run_command(command)
    File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
      cmd_obj.run()
    File "/usr/lib/python2.7/distutils/command/build_ext.py", line 339, in run
      self.build_extensions()
    File "/tmp/pip-build-jRpryD/Pillow/setup.py", line 512, in build_extensions
      ' using --disable-%s, aborting' % (f, f))
  ValueError: jpeg is required unless explicitly disabled using --disable-jpeg, aborting

  ----------------------------------------
  Failed building wheel for Pillow
  Running setup.py clean for Pillow
Failed to build Pillow
Installing collected packages: Pillow
  Running setup.py install for Pillow ... error
    Complete output from command /usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-jRpryD/Pillow/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-4o357y-record/install-record.txt --single-version-externally-managed --compile --user --prefix=:
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-2.7
    creating build/lib.linux-x86_64-2.7/PIL
    copying PIL/XVThumbImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/PngImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/WebPImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/XbmImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ImageQt.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/TarIO.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ImageCms.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/SpiderImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/GbrImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/FpxImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/WmfImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/PcfFontFile.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ImageColor.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/Jpeg2KImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/__init__.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/Hdf5StubImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/GimpGradientFile.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/MicImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/PcxImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/IptcImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/IcoImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/features.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ImagePalette.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/PSDraw.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/_binary.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/JpegPresets.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/BmpImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ImagePath.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/GdImageFile.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/PpmImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ImageSequence.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/FliImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/BufrStubImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/_util.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/PyAccess.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/OleFileIO.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/PdfImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ImageWin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/Image.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/TgaImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ImageGrab.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/GimpPaletteFile.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/XpmImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/McIdasImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/PaletteFile.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ImageFont.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/PixarImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ImageFile.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/GifImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/DcxImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ImageTransform.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/GribStubImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/JpegImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/WalImageFile.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/PsdImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/FontFile.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/MpegImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/TiffImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/PcdImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/IcnsImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ImageEnhance.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ImageOps.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ImageTk.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/SgiImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ExifTags.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/MpoImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ImtImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/EpsImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/DdsImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/PalmImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/SunImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ContainerIO.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/BdfFontFile.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ImageDraw2.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ImImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/FtexImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ImageShow.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ImageMorph.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/CurImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/MspImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ImageFilter.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ImageMath.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/TiffTags.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ImageDraw.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ImageStat.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ImageChops.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/ImageMode.py -> build/lib.linux-x86_64-2.7/PIL
    copying PIL/FitsStubImagePlugin.py -> build/lib.linux-x86_64-2.7/PIL
    running egg_info
    writing Pillow.egg-info/PKG-INFO
    writing top-level names to Pillow.egg-info/top_level.txt
    writing dependency_links to Pillow.egg-info/dependency_links.txt
    warning: manifest_maker: standard file '-c' not found

    reading manifest file 'Pillow.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    warning: no files found matching '*.sh'
    no previously-included directories found matching 'docs/_static'
    warning: no previously-included files found matching '.coveragerc'
    warning: no previously-included files found matching '.editorconfig'
    warning: no previously-included files found matching '.landscape.yaml'
    warning: no previously-included files found matching 'appveyor.yml'
    warning: no previously-included files found matching 'build_children.sh'
    warning: no previously-included files found matching 'tox.ini'
    warning: no previously-included files matching '.git*' found anywhere in distribution
    warning: no previously-included files matching '*.pyc' found anywhere in distribution
    warning: no previously-included files matching '*.so' found anywhere in distribution
    writing manifest file 'Pillow.egg-info/SOURCES.txt'
    copying PIL/OleFileIO-README.md -> build/lib.linux-x86_64-2.7/PIL
    running build_ext
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-jRpryD/Pillow/setup.py", line 767, in <module>
        zip_safe=not debug_build(), )
      File "/usr/lib/python2.7/distutils/core.py", line 151, in setup
        dist.run_commands()
      File "/usr/lib/python2.7/distutils/dist.py", line 953, in run_commands
        self.run_command(cmd)
      File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
        cmd_obj.run()
      File "/usr/local/lib/python2.7/dist-packages/setuptools/command/install.py", line 61, in run
        return orig.install.run(self)
      File "/usr/lib/python2.7/distutils/command/install.py", line 601, in run
        self.run_command('build')
      File "/usr/lib/python2.7/distutils/cmd.py", line 326, in run_command
        self.distribution.run_command(command)
      File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
        cmd_obj.run()
      File "/usr/lib/python2.7/distutils/command/build.py", line 128, in run
        self.run_command(cmd_name)
      File "/usr/lib/python2.7/distutils/cmd.py", line 326, in run_command
        self.distribution.run_command(command)
      File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
        cmd_obj.run()
      File "/usr/lib/python2.7/distutils/command/build_ext.py", line 339, in run
        self.build_extensions()
      File "/tmp/pip-build-jRpryD/Pillow/setup.py", line 512, in build_extensions
        ' using --disable-%s, aborting' % (f, f))
    ValueError: jpeg is required unless explicitly disabled using --disable-jpeg, aborting

    ----------------------------------------
Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-jRpryD/Pillow/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-4o357y-record/install-record.txt --single-version-externally-managed --compile --user --prefix=" failed with error code 1 in /tmp/pip-build-jRpryD/Pillow/
You are using pip version 8.1.1, however version 8.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
daniel@beepboop:~$ 

1 Answer

As mentioned in , do sudo apt install libjpeg-dev zlib1g-dev to install the necessary dependencies for Pillow.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Alexander Ross
Author

Alexander Ross

Alexander Ross has covered the video game industry for a decade, writing deep dives on game design, esports tournaments, VR developments, and gaming culture.