-
Notifications
You must be signed in to change notification settings - Fork 151
Windows
-
New in 3.3: Jep can be built on Windows with
python setup.py build
. - New in 3.4: Jep is easier to build on Windows, requiring less configuration steps.
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 need to 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 to build are rather specific based on the compiler. We recommend you don't have all these compilers installed simultaneously, if you need something like that, virtual machines are the way to go.
This is now the easiest way to build Jep for Windows, but it only supports Python 2.7. Microsoft released a compiler specifically for building Python and CPython extensions with Python 2.7. The compiler is freely available and known as the Microsoft Visual C++ Compiler for Python 2.7. Thankfully this compiler supports both 32-bit and 64-bit. After downloading and installing the compiler, skip down to the Running the build step.
The official Python 2 was built with Microsoft Visual Studio Express 2008, so that's the official way to build Jep for Python 2. The compiler 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 is one that is 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:
- 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.
- 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)
- Copy
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars64.bat
toC:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\vcvarsamd64.bat
. - Proceed to the Running the build step.
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 is one that is 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:
- 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.
- 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
- Windows Native Code Development
- You can't build Jep 64-bit with an ordinary command prompt. Instead go to
Start -> All Programs -> Microsoft Windows SDK 7.1 -> Windows SDK 7.1 Command Prompt
. - Proceed to the Running the build step.
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 path/to/wheelfile.whl
. If you're using virtualenv, make sure you run the pip 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.
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:
- http://stackoverflow.com/questions/2817869/error-unable-to-find-vcvarsall-bat
- http://stackoverflow.com/questions/13596407/errors-while-building-installing-c-module-for-python-2-7
- http://stackoverflow.com/questions/23691564/running-cython-in-windows-x64-fatal-error-c1083-cannot-open-include-file-ba
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.