Python 在setup.py中安装C库 背景

Python 在setup.py中安装C库 背景,python,c,github,installation,pip,Python,C,Github,Installation,Pip,我用C编写了一个Python扩展,其中包括库GLFW和GL(OpenGL)。我正在将脚本放在GitHub上,希望有一个setup.py,这样它就可以安装并准备好在一行代码中使用pip install git+LibraryURL 我知道您可以在Mac上轻松安装它们: mkdir homebrew && curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew bre

我用C编写了一个Python扩展,其中包括库
GLFW
GL
(OpenGL)。我正在将脚本放在GitHub上,希望有一个setup.py,这样它就可以安装并准备好在一行代码中使用
pip install git+LibraryURL

我知道您可以在Mac上轻松安装它们:

mkdir homebrew && curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew
brew install glew
brew install glfw3
但这只是Mac,它甚至不在setup.py中,您必须手动运行它。我对C相当陌生,所以我不知道该怎么办

问题: 如何在GitHub repo的setup.py中自动安装
GLFW
GL
(OpenGL),使其适用于Mac、Windows和Linux

进展 目前,我的setup.py大致如下:

from setuptools import setup, Extension
from setuptools.command.install import install
import subprocess

# Compile C script to be called from Python
class CustomInstall(install):
    def run(self):
        command = "git clone https://mygit.com/CLibrary.git"
        process = subprocess.Popen(command, shell=True, cwd="packageName")
        process.wait()
        install.run(self)

module = Extension('packageName.library',
                   sources = ['packageName/library.c'], # File that includes GLFW and GL
                   include_dirs = ['packageName/include'])

setup(
    name='packageName',
    version='0.1',
    packages=['packageName'],
    install_requires=[
        ...
    ],
    cmdclass={'install': CustomInstall},
    include_package_data=True,
    ext_modules=[module],
)

你可能不应该。没有好的便携方式来安装这些库,干预用户的系统设置不是您的责任。您只需告诉他们需要安装OpenGL组件。无论出于何种目的,它们都是操作系统的可选部分。您可以检测到所需的库没有作为安装的一部分出现,然后检测主机操作系统并建议操作系统特定的安装方式。