Tar.gz'nin pip kurulumuyla 'Cython' adlı modül yok


10

Örnek paketim ( https://github.com/iamishalkin/cyrtd ) için tar.gz ve whl dosyaları oluşturmak için Şiir kullanıyorum ve daha sonra pipenv ortamında paket kurmaya çalışıyorum. tar.gz yüklemesi başarısız oluyor ve bu bir günlük dosyası:

$ 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 yüklüdür ve sanal yorumlayıcıdan çağrılabilir. Günlüklerde bile, cython için gereksinimler karşılanır. Garip olan - her şey birkaç ay önce iyi çalıştı. Ayrıca conda venv, yükseltilmiş cython ve şiir denedim, hiçbir şey yardımcı oldu. Ayrıca Cyrhon ile setup_requires gelen zayıf ilgili geçici çözümü denedi? - hala şans yok

UPD : Burada kirli bir çözüm buldum: https://luminousmen.com/post/resolve-cython-and-numpy-dependencies

Fikir eklemek

from setuptools import dist
dist.Distribution().fetch_build_eggs(['cython'])

Cython'dan önce.

Bundan sonra şu günlükleri alıyorum:

$ 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

Hala daha iyi bir çözüm arıyor

UPD2: ana dosya içeriği: 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']
    })

1
olduğu build.pydeğer olarak komut seti [tool.poetry].buildveya bunu nasıl bağlamak mı?
Arne

1
@ Arne evet, elbette pyproject.tomldosyaya bağlı.
Sorudan

ah, repoyu bağladığını görmedim. bu sizin için uygun bir çözüm mü, yoksa hala daha iyi bir şey mi arıyorsunuz? Yeterince iyi ise, bunu kendi kendine yeten bir yanıt olarak göndermeyi düşünün.
Arne

@ Bir süre önce her şey böyle bir çözüm olmadan iyi çalıştı, bu yüzden daha iyi bir çözüm olduğundan eminim. Sorun şu ki, bilmiyorum, ne değişti ve nerede hata aramak için
Ivan Mishalkin

Yanıtlar:


0

Yapı sistemi bölümüne cython eklemek pyproject.tomlbana yardımcı oldu

pyproject.toml:

...
[build-system]
requires = ["poetry>=0.12", "cython"]
...
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.