Skip to content

Instantly share code, notes, and snippets.

@itdaniher
Last active July 17, 2025 07:49
Show Gist options
  • Save itdaniher/46fec3dd3b7eb603d7cbb5cd55fa5e1d to your computer and use it in GitHub Desktop.
Save itdaniher/46fec3dd3b7eb603d7cbb5cd55fa5e1d to your computer and use it in GitHub Desktop.

Revisions

  1. itdaniher revised this gist Jan 18, 2018. No changes.
  2. itdaniher created this gist Jan 18, 2018.
    20 changes: 20 additions & 0 deletions compile.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,20 @@
    import subprocess
    import sys
    import tempfile
    from Cython.Compiler import Main, CmdLine, Options

    in_file_name = sys.argv[1]
    source = open(in_file_name).read()
    out_file_name = in_file_name.replace('.py', '.out')

    temp_py_file = tempfile.NamedTemporaryFile(suffix='.py', delete=False)
    temp_py_file.write(source.encode())
    temp_py_file.flush()

    Main.Options.embed = 'main'
    res = Main.compile_single(temp_py_file.name, Main.CompilationOptions(), '')

    gcc_cmd = 'gcc -fPIC -O2 %s -I/usr/include/python3.6 -L/usr/lib/python3.6 -lpython3.6m -o %s' % (res.c_file, out_file_name)

    print(gcc_cmd)
    assert 0 == subprocess.check_call(gcc_cmd.split(' '))