プロジェクトからrpmを作成するためにdistutilsを使用しています。私はこのディレクトリツリーを持っています:
project/
my_module/
data/file.dat
my_module1.py
my_module2.py
src/
header1.h
header2.h
ext_module1.cpp
ext_module2.cpp
swig_module.i
setup.py
MANIFEST.in
MANIFEST
私のsetup.py
:
from distutils.core import setup, Extension
module1 = Extension('my_module._module',
sources=['src/ext_module1.cpp',
'src/ext_module2.cpp',
'src/swig_module.i'],
swig_opts=['-c++', '-py3'],
include_dirs=[...],
runtime_library_dirs=[...],
libraries=[...],
extra_compile_args=['-Wno-write-strings'])
setup( name = 'my_module',
version = '0.6',
author = 'microo8',
author_email = 'magyarvladimir@gmail.com',
description = '',
license = 'GPLv3',
url = '',
platforms = ['x86_64'],
ext_modules = [module1],
packages = ['my_module'],
package_dir = {'my_module': 'my_module'},
package_data = {'my_module': ['data/*.dat']} )
私のMANIFEST.in
ファイル:
include src/header1.h
include src/header2.h
MANIFEST
ファイルはによって自動的に生成されますpython3 setup.py sdist
。そして、実行python3 setup.py bdist_rpm
すると、正しいrpmパッケージがコンパイルおよび作成されます。ただし、問題は、C ++ソースでSWIGを実行するとmodule.py
、バイナリファイルをラップするファイル_module.cpython32-mu.so
が作成され、そのファイルとともに作成module_wrap.cpp
され、ディレクトリにコピーされないことmy_module
です。
setup.py
SWIGで生成されたPythonモジュールを自動的にコピーするには、ファイルに何を書き込む必要がありますか?
また、別の質問があります。rpmパッケージをインストールするときに/usr/bin
、アプリケーションを実行するために実行可能ファイルを作成する必要があります(たとえば、my_module/my_module1.py
がアプリケーションの開始スクリプトである場合は、bashで実行できます。$ my_module1
)。