2016-05-29 4 views
1

Wenn man den folgenden Code ausgeführt wird:kompilieren Cython mit spezifischen Compiler args

git clone https://github.com/cython/cython.git 
sudo python setup.py install 

cython (Cython==0.24) mit den Standard-Kompilierung Argumente zusammengestellt. Apparently, verwendet es zu sein, dass man hinzufügen könnte:

extra_compile_args=["-O3"] 

zum setup.py Datei und diese steuern. Aber ich habe gerade versucht es (durch diese Linie rechts unten setzen:

import platform 
is_cpython = platform.python_implementation() == 'CPython' 

) und wenn ich

tun
sudo python setup.py install 

alle Dateien sind immer noch mit der gefürchteten -O2 Flagge zusammengestellt. Wie behebe ich das?

(Ich verwende Linux)

+1

Ich bin mir ziemlich sicher, wenn Sie CFLAGS = "- O3" exportieren 'es wird es fangen, hängt es an und verwendet das über den Standard. –

+0

Sie meinen, fügen Sie diesen Befehl zu 'setup.py'? – user189035

+0

Nein, nein, führe es einfach vom Terminal aus, bevor du 'setup.py' startest. –

Antwort

1

Ich bin mir ziemlich sicher, dass export CFLAGS="-O3" vom Terminal vor setup.py läuft (wie ich im Kommentar erwähnt) in der Regel funktioniert der Trick, aber ich erkannte, genau das, was Sie waren versuchen zu tun.

Sie müssen die extra_compile_args als Argument angeben, wenn Sie die Extention Objekte für die Datei (en) erstellen, die kompiliert werden müssen. extra_compile_args ist eine Liste mit einer Zeichenfolge für jedes Argument, das Sie angeben möchten.

In der setup.py Skript für die Cython Lib, that is performed in lines 163-166 wenn ich mich nicht irre.

Kurz gesagt, wenn Sie diese Zeilen zu ändern:

extensions.append(Extension(
     module, sources=[pyx_source_file], 
     extra_compile_args=["-O3"], # add the needed argument 
     define_macros=defines_for_module, 
     depends=dep_files)) 

Es wird sicherstellen, dass jede .pyx-Datei, die erstellt wird, hat das -O3 Argument angegeben.

+1

Liefern Sie sie als 'extra_compiler_args = [" - O3 "," -march = native "]'? Sie müssen eine Liste von Zeichenfolgen angeben, die den Argumenten entsprechen. –

Verwandte Themen