web-dev-qa-db-ja.com

Cython用のPyCharmのセットアップ

PyCharmはCythonをサポートしています

私はいつでもターミナルでコンパイルして実行することができましたが、PyCharmでこれを行う方法があるかどうか疑問に思っています。リンクには、「コンパイルは外部ツールを使用して行われます。推奨されるビルドシステム(Makefile、setup.pyなど)は外部ツールとして構成する必要があります。」と書かれています。この構成を行う方法を知りたいです。 Cythonを使用したPyCharmの小さなHelloWorldの例をいただければ幸いです。

ありがとう

11
eharbitz

ここで私自身の質問に答えます:

関数fib.pyx:があるとしましょう。

def fib(n):
"""Print the Fibonacci series up to n."""
a, b = 0, 1
while b < n:
    print b,
    a, b = b, a + b

これをコンパイルして実行するには2つの方法があります

  1. セットアップファイルを使用します。ファイルを作成しますsetup.py

    from distutils.core import setup
    from Cython.Build import cythonize
    
    ext_options = {"compiler_directives": {"profile": True}, "annotate": True}
    setup(
        ext_modules = cythonize("fib.pyx", **ext_options)
    )
    

    ext_optionsは、注釈付きのhtmlファイルを生成するためにここに含まれています。このファイルを実行するには、ツール-> setup.pyタスクの実行に移動する必要があります。次に、build_extタスク名と入力し、プロンプトが表示されたらコマンドライン入力タイプ--inplaceを入力します。ファイルfib.cfib.oおよび実行可能ファイルfib.soが生成されます。注釈ファイルfib.htmlも作成されます。

    これで、次のコードは任意のpythonファイルで機能するはずです。たとえば、main.py

    import fib
    fib.fib(2000)
    
  2. はるかに簡単な方法は、pyximportを使用することです。セットアップファイルは必要ありません。これは、 "モジュールに追加のCライブラリや特別なビルドセットアップが必要ない" ファイルmain.pyのようになっている場合にのみ使用できることに注意してください。

    import pyximport; pyximport.install()
    import fib
    fib.fib(2000)
    

    fib.cfib.ofib.soファイルは実行されませんが、私が理解している限り、同じコードのコンパイルが行われます。 tはプロジェクトフォルダに行き着きます。 fib.htmlコードも生成されませんが、メインファイルに2行追加することで修正できます。新しい行でmain.pyは次のようになります:

    import pyximport; pyximport.install()
    import subprocess
    subprocess.call(["cython", "-a", "fib.pyx"])
    import fib
    fib.fib(2000)
    
16
eharbitz