dak ブログ

python、rubyなどのプログラミング、MySQL、サーバーの設定などの備忘録。レゴの写真も。

cython プログラムを含む python パッケージの作成方法

2019-01-20 15:00:42 | python
cython プログラムを含む python パッケージの作成方法のメモ。

■ディレクトリ構成
foo_root
├── setup.py
└── foo
     ├── __init__.py
     ├── module1.pyx
     ├── module2.pyx
     └── bar
          ├── __init__.py
          └── module3.pyx


■setup.py
from distutils.core import setup
from Cython.Build import cythonize
from setuptools import setup, find_packages, Extension


setup(name='foo',
      version='1.0.0',
      description='...',
      author='foo',
      author_email='foo@bar.com',
      url='http://.../',
      install_requires=[
          "numpy==1.15.4"
      ],

      zip_safe=False,
      packages=['foo', 'foo.bar'],
      package_dir={
          'foo': 'foo',
          'foo.bar': 'foo/bar'
      },

      ext_modules=[
          Extension('foo.module1', sources=['foo/module1.pyx']),
          Extension('foo.module2', sources=['foo/module2.pyx']),
          Extension('fooo.bar.module3', sources=['foo/bar/module3.pyx'])
      ]
)

※zip_safe=False がないと、from foo.module1 import Module1 でエラーが発生した。

■インストール
python setup.py install


■インストールされたパッケージ一覧
pip list


■アンインストール
pip uninstall foo

foo は setup.py 中で name で指定したパッケージ名

■cython で生成した .c、.so などの削除
python setup.py clean --all