LoginSignup
5
3

More than 5 years have passed since last update.

PyCharmでCythonを試そうとしたらハマったのでメモ

Last updated at Posted at 2018-09-03

概要

PyCharmでCythonを使おうとして、

  1. Basic Tutorial — Cython 0.29a0 documentation
  2. PyCharm上でCythonのビルドを簡単にするには – 長久手パラボラ日記

を参考に、setup.pyを設定して実行したら

/Users/username/PycharmProjects/cyyc/venv/bin/python3.6 /Users/username/PycharmProjects/cyyc/setup.py build_ext --inplace
Traceback (most recent call last):
  File "/Users/username/PycharmProjects/cyyc/setup.py", line 8, in <module>
    ext_modules=cythonize("helloworld.pyx")
  File "/Users/username/PycharmProjects/cyyc/venv/lib/python3.6/site-packages/Cython/Build/Dependencies.py", line 897, in cythonize
    aliases=aliases)
  File "/Users/username/PycharmProjects/cyyc/venv/lib/python3.6/site-packages/Cython/Build/Dependencies.py", line 777, in create_extension_list
    for file in nonempty(sorted(extended_iglob(filepattern)), "'%s' doesn't match any files" % filepattern):
  File "/Users/username/PycharmProjects/cyyc/venv/lib/python3.6/site-packages/Cython/Build/Dependencies.py", line 102, in nonempty
    raise ValueError(error_msg)
ValueError: 'helloworld.pyx' doesn't match any files

プロセスは終了コード 1 で完了しました

helloworld.pyxが見つからないと言われた。
("cyyc"はプロジェクト名)

環境

macOS High Sierra 10.13.6
PyCharm Professional 2018.2(Pleiadesで日本語化済)
Python3.6
virtualenv使用

やったこと

絶対パスを指定

.pyxファイルの場所を絶対パスにした。

setup.py
from distutils.core import setup
from Cython.Build import cythonize

setup(
    ext_modules=cythonize("/Users/username/PycharmProjects/cyyc/helloworld.pyx")
)

成功したけど、これでは不便。

作業ディレクトリを変える

外部ツールの設定を見直す。
PyCharm > Preferences > ツール > 外部ツール
スクリーンショット 2018-09-03 23.11.39.png

作業ディレクトリが初期設定では/venv/binになっているが、ソースファイルのあるディレクトリに変える。
ここでは、とりあえずマクロでプロジェクトディレクトリ$Projectpath$を指定する。
後から気づいたが、参考にしたサイト2でもこのように設定していた。
スクリーンショット 2018-09-03 23.58.40.png

setup.pyを元に戻した。

setup.py
from distutils.core import setup
from Cython.Build import cythonize

setup(
    ext_modules=cythonize("helloworld.pyx")
)

実行すると、.soファイルが生成された。

気づいたこと

外部ツールの設定で、引数の1つ目をFilePathとマクロで指定しているためか、setup.py以外のファイルを開いた状態で外部ツールの実行をするとそのファイルが引数に入れられて、実行に失敗する。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3