【发布时间】:2013-07-16 00:17:16
【问题描述】:
我有一个如下所示的 setup.py:
from setuptools import setup, Extension
import glob
sources = glob.glob('src/*.cpp') + glob.glob('src/*.i')
# this is ugly, but otherwise I get the wrapper included twice
sources = [source for source in sources if '_wrap' not in source]
setup(
name = 'engine',
ext_modules = [
Extension(
'_engine',
sources = sources,
swig_opts = ['-c++'],
include_dirs = ['src']
)
],
py_modules = ['engine']
package_dir = {'' : 'src'}
)
现在只要我运行install 两次就可以了。第一次,swig 在 src 目录中创建 engine.py。但它不会被复制到目标。第二次运行 setup.py 文件时,找到并安装了 engine.py。有没有办法让这一切都在第一次工作?
【问题讨论】:
-
我的设置比你的更简单,但我发现我必须这样做。一种“解决方法”是先运行构建,然后安装,但所做的只是生成 swig 包装器,以便安装看到它。它在安装阶段而不是构建阶段被复制。