我正在使用 distutils 从我的项目创建 rpm。我有这个目录树:
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
my 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 = '[email protected] /cdn-cgi/l/email-protection',
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']} )
my MANIFEST.in
file:
include src/header1.h
include src/header2.h
the 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
).