Compile Nim extensions for Python when imported!
Project description
Nimporter
Compile Nim extensions for Python on import automatically!
With Nimporter, you can simply import Nim source code files as if they
were Python modules, and use them seamlessly with Python code. The compiler is
invoked to build a Python-compatible extension module and it is then placed in
the __pycache__
directory, which means that you don't have to add a line to
your .gitignore
files because (presumably) Git is already ignoring the
__pycache__
directory.
Possible Benefits
- Seamless integration with existing Nim code by using the Nimpy library.
- Very low effort to create high-performance Python extensions using Nim.
- Leverage both language's ecosystems: Python for breadth, Nim for performance.
Dependencies
- Nim Compiler
- Nimpy library
- Nimporter library (this library).
Installation
# Windows
$ pip install nimporter # Nimporter library
$ nimble install nimpy # Nimpy library
# Everything Else
$ pip3 install nimporter # Nimporter library
$ nimble install nimpy # Nimpy library
Examples
# nim_math.nim
import nimpy
proc add(a: int, b: int): int {.exportpy.} =
return a + b
import nimporter
import nim_math
print(nim_math.add(2, 4)) # 6
Documentation
For tutorials, advanced usage, and more, head over to the Wiki.
Distributing Libraries Using Nimporter
Libraries that require Nim source files can easily distribute those files by
adding the following to their setup.py
file:
setup(
name='Foo', # Keep your existing arguments
version='0.1.0',
...,
package_data={'': ['*.nim']}, # Distribute Nim source files
include_package_data=True,
install_requires=['nimporter'] # Depends upon Nimporter
)
When creating a source distribution, the Nim source files will be included along with the normal Python files it uses.
Stargazers over time
Made using https://starchart.cc/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.