Ich verwende Poetry, um tar.gz- und whl-Dateien für mein Beispielpaket ( https://github.com/iamishalkin/cyrtd ) zu erstellen, und versuche dann, das Paket in der pipenv-Umgebung zu installieren. Die Installation von tar.gz schlägt fehl und dies ist ein Teil der Protokolle:
$ poetry build
...
$ pip install dist/cyrtd-0.1.0.tar.gz
Processing c:\work2\cyrtd\dist\cyrtd-0.1.0.tar.gz
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing wheel metadata ... done
Requirement already satisfied: cython<0.30.0,>=0.29.13 in c:\users\ivan.mishalkin\.virtualenvs\cyrtd-tpdvsw8x\lib\site-packages (from cyrtd==0.1.0) (0.29.15)
Building wheels for collected packages: cyrtd
Building wheel for cyrtd (PEP 517) ... error
ERROR: Command errored out with exit status 1:
...
from Cython.Build import cythonize
ModuleNotFoundError: No module named 'Cython'
----------------------------------------
ERROR: Failed building wheel for dxpyfeed
Failed to build dxpyfeed
ERROR: Could not build wheels for dxpyfeed which use PEP 517 and cannot be installed directly
Cython ist installiert und kann vom virtuellen Interpreter aufgerufen werden. Auch in Protokollen steht geschrieben, dass die Anforderungen an Cython erfüllt sind. Was seltsam ist - vor ein paar Monaten hat alles gut funktioniert. Ich habe auch Conda Venv ausprobiert, Cython und Poesie verbessert, nichts hat geholfen. Auch versucht, schwach verwandte Problemumgehung von setup_requires mit Cython? - Immer noch kein Glück
UPD : Ich habe hier eine schmutzige Problemumgehung gefunden: https://luminousmen.com/post/resolve-cython-and-numpy-dependencies
Die Idee ist hinzuzufügen
from setuptools import dist
dist.Distribution().fetch_build_eggs(['cython'])
vor Cython.Build Import
Danach bekomme ich folgende Protokolle:
$ pip install dist/cyrtd-0.1.0.tar.gz
Processing c:\work2\cyrtd\dist\cyrtd-0.1.0.tar.gz
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing wheel metadata ... done
Requirement already satisfied: cython<0.30.0,>=0.29.13 in c:\users\ivan.mishalkin\.virtualenvs\cyrtd-tpdvsw8x\lib\site-packages (from cyrtd==0.1.0) (0.29.15)
Building wheels for collected packages: cyrtd
Building wheel for cyrtd (PEP 517) ... done
Created wheel for cyrtd: filename=cyrtd-0.1.0-cp37-cp37m-win_amd64.whl size=33062 sha256=370a90657759d3183f3c11ebbdf1d23c3ca857d41dd45a86386ba33a6baf9a07
Stored in directory: c:\users\ivan.mishalkin\appdata\local\pip\cache\wheels\45\d1\6b\52daecf1cc5234ca4d9e9e49b2f195e7adb83941424116432e
Successfully built cyrtd
Installing collected packages: cyrtd
Attempting uninstall: cyrtd
Found existing installation: cyrtd 0.1.0
Uninstalling cyrtd-0.1.0:
Successfully uninstalled cyrtd-0.1.0
Successfully installed cyrtd-0.1.0
Immer noch auf der Suche nach einer besseren Lösung
UPD2: Hauptdateien Inhalt: build.py:
from setuptools import Extension
from Cython.Build import cythonize
cyfuncs_ext = Extension(name='cyrtd.cymod.cyfuncs',
sources=['cyrtd/cymod/cyfuncs.pyx']
)
EXTENSIONS = [
cyfuncs_ext
]
def build(setup_kwargs):
setup_kwargs.update({
'ext_modules': cythonize(EXTENSIONS, language_level=3),
'zip_safe': False,
'setup_requires':['setuptools>=18.0', 'cython']
})
quelle
build.py
Skript als Wert festgelegt[tool.poetry].build
oder wie binden Sie es?pyproject.toml
Datei gebunden . Das Repo von Frage enthält den gesamten CodeAntworten:
Das Hinzufügen von Cython im Build-System-Bereich in
pyproject.toml
hat mir geholfenpyproject.toml
::quelle