How to create a .pyd file?

26,647

You have to run a setup.py file in a terminal. This one is an example that uses numpy

try:
    from setuptools import setup
    from setuptools import Extension
except ImportError:
    from distutils.core import setup
    from distutils.extension import Extension

from Cython.Distutils import build_ext
import numpy as np

ext_modules = [Extension("my_code_cython",["my_code_cython.pyx"]),
               Extension("another_code_cython",["another_code_cython.pyx"])]

setup(
    name= 'Generic model class',
    cmdclass = {'build_ext': build_ext},
    include_dirs = [np.get_include()],
    ext_modules = ext_modules)

In the terminal (cmd in Windows) you have to execute the command

python setup.py build_ext --inplace

It is important that I suppose you have installed the compiler (Microsoft Visual C++ Compiler Package for Python 2.7 for example). You can find more information in https://github.com/cython/cython/wiki/CythonExtensionsOnWindows

Share:
26,647
linusg
Author by

linusg

Updated on July 30, 2022

Comments

  • linusg
    linusg almost 2 years

    I'm creating a project that uses Python OpenCV. My image processing is a bit slow, so I thought I can made the code faster by creating a .pyd file (I read that somewhere).

    I am able to create a .c file using Cython, but how to make a .pyd? While they are a kind of .dll, should I make a .dll first and convert it? And I think they're not platform-independent, what are equivalents on Unix?

    Thanks for any help!

  • linusg
    linusg about 8 years
    Thanks for that, I've figured it out already :). Can I use this on *nix to create .so files using gcc?
  • sebacastroh
    sebacastroh about 8 years
    Yes, that's the code I use on both Windows and *nix (Ubuntu in my case)
  • Breno
    Breno over 2 years
    The issue with this, at least for me, is that I do not know how to specify a different compiler using setuptools (or distutils). For example, an Intel compiler in Windows.