![](/img/trans.png)
[英]Python receives SIGSEGV while loading C++ written extension module
[英]Can I use an alternative build system for my Python extension module (written in C++)?
雖然 distutils 工作正常,但我對它並不完全滿意,而且我也有沒有明顯解決方案的性能問題。 是否可以在我的 setup.py 腳本中集成 Premake 或 cmake,以便python setup.py build
調用它們,然后將輸出放置在 install 期望的位置?
我想出了一個方法,它不漂亮,但有效。
這是我的setup.py
腳本文件的總結 - 它應該是不言自明的:
import shutil
import os
from distutils.core import setup
from distutils.core import Extension
from distutils.command.build_ext import build_ext
from distutils.command.install_lib import install_lib
library = None
def build_lib():
"""
Build library and copy it to a temp folder.
:returns: Location of the generated library is returned.
"""
raise NotImplementedError
class MyInstall(install_lib):
def install(self):
global library
shutil.move(library, self.install_dir)
return [os.path.join(self.install_dir, library.split(os.sep)[-1])]
class MyBuildExtension(build_ext):
def run(self):
global library
library = build_lib();
module = Extension('name',
sources=[])
setup(
name='...',
version='...',
ext_modules=[module],
description='...',
long_description='...',
author='...',
author_email='...',
url='...',
keywords='...',
license='...',
platforms=[],
classifiers=[],
cmdclass={
'build_ext': MyBuildExtension,
'install_lib': MyInstall
},
)
我希望它有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.