簡體   English   中英

我可以為我的 Python 擴展模塊(用 C++ 編寫)使用替代構建系統嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM