Skip to content
Nathan Jensen edited this page Aug 17, 2015 · 33 revisions

New in 3.3: Jep can be built on Windows with python setup.py build.

Known Issues

Build Setup

Special thanks goes to David Lovely, Günther Weidenholzer, and Nikolas Falco for getting variations of the Windows build working and sharing their notes and experience.

CPython extensions generally need to be built with the same compiler that built Python. That's usually MSVC, and MSVC needs to be installed prior to building Jep, but sadly it's not that simple. You must build with very specific versions of MSVC for this to work correctly. And you must install extra packs if you want 64-bit.

Any deviation from this (i.e. MinGW or a different version of MSVC) is at your own risk. If you manage to successfully build with variations and have a working and stable Jep, we'd love to hear about it. The following steps presume you allow MSVC to install to its default directories. If you install MSVC elsewhere, you may have to slightly alter steps that mention specific paths.

The steps are different depending on if you want to build Jep for Python 2 or Python 3.

Python 2 Jep Build Setup

The official Python 2 was built with Microsoft Visual Studio Express 2008, so you should build Jep with that. It is freely available and also known as MSVC 9.0. You will need to download and install it. Finding a download link can be difficult, here are some that are working:

If you want to build 32-bit, skip down to the Running the build step.


If you want to build 64-bit, continue on with these steps:

  1. You need to download and install the Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1. It is very important that you use this download with .NET Framework 3.5, the installer with .NET Framework 4 will not work as it assumes Visual Studio 2010.
  2. When you run the installer, it will prompt you about what to install. You need to install the following:
    • Windows Headers and Libraries
    • Visual C++ Compilers
    • Win32 Development Tools (under Windows Development Tools)
  3. Copy C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars64.bat to C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\vcvarsamd64.bat.

Python 3 Jep Build Setup

The official Python 3 was built with Microsoft Visual Studio Express 2010, so you should build Jep with that. It is freely available and also known as MSVC 10.0. You will need to download and install it. Finding a download link can be difficult, here are some that are working:

If you want to build 32-bit, skip down to the Running the build step.


If you want to build 64-bit, continue on with these steps:

  1. You need to download and install the Microsoft Windows SDK for Windows 7 and .NET Framework 4. It is very important that you use this download with .NET Framework 4, the installer with .NET Framework 3.5 will not work as it assumes Visual Studio 2008.
  2. When you run the installer, it will prompt you about what to install. You need to install the following:
    • Windows Native Code Development
      • Windows Headers and Libraries
      • Tools
      • Visual C++ Compilers
  3. You can't build Jep with an ordinary command prompt. Instead go to Start -> All Programs -> Microsoft Windows SDK 7.1 -> Windows SDK 7.1 Command Prompt.

Running the build

Presuming you completed the steps above for your version of Python, you should be ready to build Jep. You might want to make a virtualenv to keep things isolated, and if you wanted numpy support you should install it now if it's not already installed. An easy way to get a numpy install working on Windows is to download a wheel from this page: http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy

If you want to install the numpy wheel, use pip install --no-index --find-links=/path/to/wheel/dir. If you're using virtualenv, make sure you run that command after you've activated the virtualenv so numpy installs to the virtualenv.

To run the build, from the jep dir use python setup.py build. If all goes well you will end up with a build dir with some jars, a jep.pyd, and a jep.bat file. Running python setup.py install will place the files in their appropriate locations:

  • jep python files will be installed to Python's Lib/site-packages/jep
  • jep jar will be installed to Python's Lib/site-packages/jep
  • jep.pyd will be renamed jep.dll and installed to Python's Lib/site-packages/jep
  • jep.bat will be installed to Python's Scripts dir

Now you should be able to run python setup.py test if you'd like to test it, or simply run jep to use the interactive interpreter.

Further Help

Should you diverge from this path, or get stuck, someone else may have run into the same problems as you. The following stack overflow pages are quite useful for trying to build CPython extensions on Windows:

Other Insights

The setup.py build command should produce a jep.pyd file and the setup.py install command will rename it to jep.dll. pyd files are very similar to DLLs. If Python were to load the library, we'd probably want a pyd file, but since the library will be loaded from Java, we need a DLL. The DLL will retain a manifest in the file so the operating system can load it correctly. If by chance you somehow end up with both jep.pyd and jep.dll, you must remove the jep.pyd file as it will get loaded first and will not work correctly.

Alternative (deprecated) build for Jep versions older than 3.3: Open Jep as a project in Microsoft Visual Studio and build within Visual Studio. The windows directory exists to support this alternative. If using a version of Jep prior to 3.3, this is the recommended way to build on Windows.

Clone this wiki locally