私は、C++の拡張子を持つpythonパッケージを作成しています。私はsetuptoolsでこれをやってみようとしていますが、これは推奨される解決策です。それがsetup_requires、install_requiresを許すとすれば、私は同意して、私のpythonパッケージのみに使用します。しかし、私はC++拡張モジュールを持っているときに動作させることができません。それから、私はdistutils.coreを利用して動作させます。私はそれをsetuptoolsを使って動作させる方法を知りたいです。マイセットアップスクリプトがdistutils.core vs setuptools with C++ extension
from setuptools import setup
import shutil
import os
# folder where .so is being build by cpp compilation
so_src = os.path.join(dir, 'cpp/build/')
# folder where .so should live in python package
so_des = os.path.join(dir, 'package_py/cpp/')
# extension module
lib_files = ['cpp_py.so']
# copy shared lib
for f in lib_files:
shutil.copyfile(so_src + f, so_des + f)
# set-up script
setup(
name=DISTNAME
, version=FULLVERSION
, description= DESCRIPTION
, author= AUTHOR
, author_email= EMAIL
, maintainer= AUTHOR
, maintainer_email= EMAIL
, long_description=LONG_DESCRIPTION
, packages=['package_py',
'package_py.cpp']
, package_dir={'package_py.cpp': 'package_py/cpp'}
, package_data={'package_py.cpp': lib_files}
)
のように見えますこれは私のpythonサイトパッケージでpackage_py-0.0.1-py3.6.eggファイルになります。パッケージは、インストールフォルダから使用した場合にのみ動作します。代わりに、サイト内のsetuptoolsの
from distutils.core import setup # only change, remainder is the same!!
import shutil
import os
# folder where .so is being build by cpp compilation
so_src = os.path.join(dir, 'cpp/build/')
# folder where .so should live in python package
so_des = os.path.join(dir, 'package_py/cpp/')
# extension module
lib_files = ['cpp_py.so']
# copy shared lib
for f in lib_files:
shutil.copyfile(so_src + f, so_des + f)
# set-up script
setup(
name=DISTNAME
, version=FULLVERSION
, description= DESCRIPTION
, author= AUTHOR
, author_email= EMAIL
, maintainer= AUTHOR
, maintainer_email= EMAIL
, long_description=LONG_DESCRIPTION
, packages=['package_py',
'package_py.cpp']
, package_dir={'package_py.cpp': 'package_py/cpp'}
, package_data={'package_py.cpp': lib_files}
)
私は(.soのファイルで)package_pyフォルダを取得し、package_py-0.0.1-py3.6.egg-情報のdistutils.coreを使用する最初の行を変更する
パッケージ。これで、モジュールはすべてのフォルダで動作します。
私もsetup_requires、私は本当にsetuptoolsのを使用したいinstal_requiresを使用するPythonパッケージを拡張したいと。どのように私は、パッケージはsetuptoolsのを使用してすべてのフォルダで動作するように取得することができます代わりにdistutils.core