Ich machte eine Python-Anwendung, die C-Funktionen ausführen muss. Um dies zu tun, kompilierte ich die C-Funktionen in einer gemeinsam genutzten Bibliothek mit gcc und rief die Bibliothek in meinem Python-Skript mit ctypes auf.Kompilieren C Bibliothek auf Pip installieren
Ich versuche, meine Anwendung in einem Pip-Paket zu packen, fand aber keine Möglichkeit, die gemeinsam genutzte Bibliothek nach der Pip-Installation zu erstellen.
habe ich versucht, die folgende (setup.py):
from setuptools import setup
from setuptools.command.install import install
import subprocess
class compileLibrary(install):
def run(self):
install.run(self)
command = "cd packageName"
command += " && git clone https://mygit.com/myAwesomeCLibrary.git"
command += " && gcc -my -many -options"
process = subprocess.Popen(command, shell=True)
process.wait()
setup(
name='packageName',
version='0.1',
packages=['packageName'],
install_requires=[
...
],
cmdclass={'install': compileLibrary},
)
Dies funktioniert, wenn python setup.py install
aber tun, wenn man von pip installieren, während der Installationsvorgang erfolgreich ist, ist die gemeinsame Bibliothek nicht im Paketordner (pythonx.x/site-packages/packageName
).
Ich habe versucht, Distutils mit dem gleichen Ergebnis.
Auf der Grundlage der Frage Run Makefile on pip install Ich habe auch versucht die folgende setup.py:
from setuptools import setup
from distutils.command.build import build
import subprocess
class Build(build):
def run(self):
command = "cd packageName"
command += " && git clone https://mygit.com/myAwesomeCLibrary.git"
command += " && gcc -my -many -options"
process = subprocess.Popen(command, shell=True)
process.wait()
build.run(self)
setup(
name='packageName',
version='0.1',
packages=['packageName'],
install_requires=[
...
],
cmdclass={'build': Build},
)
Hier ist die Architektur meiner Paket
packageName/
├── packageName/
│ ├── __init__.py
│ ├── myFunctions.c
├── MANIFEST.in
├── README.md
├── setup.py
Hinweis: Nachdem das Paket mit pip installieren, ich nur haben Sie __init__.py
und __pycache__
im Installationsordner (pythonx.x/site-packages/packageName
).
Wie kann ich die shared library während der pip install erstellen, damit sie von meinem Paket verwendet werden kann?
Vielen Dank, aber ich möchte die Bibliothek während der Pip-Installation kompilieren. –
Sie möchten also CustomInstall und nicht CustomBuild verwenden. –