Tidak ada modul bernama 'Cython' dengan instalasi pip tar.gz


10

Saya menggunakan Puisi untuk membangun file tar.gz dan whl untuk paket contoh saya ( https://github.com/iamishalkin/cyrtd ) dan kemudian mencoba menginstal paket di dalam lingkungan pipenv. instalasi tar.gz gagal dan ini adalah sepotong log:

$ 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 diinstal dan dapat dipanggil dari penerjemah virtual. Bahkan dalam log ada tertulis, bahwa persyaratan untuk cython terpenuhi. Apa yang aneh - semuanya bekerja dengan baik beberapa bulan yang lalu. Saya juga mencoba conda venv, memutakhirkan cython dan puisi, tidak ada yang membantu. Juga mencoba solusi yang terkait lemah dari setup_requires dengan Cython?- masih belum berhasil

UPD : Saya menemukan beberapa solusi kotor di sini: https://luminousmen.com/post/resolve-cython-and-numpy-dependencies

Idenya adalah menambahkan

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

sebelum Cython. Membangun impor

Setelah ini saya mendapatkan log ini:

$ 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

Masih mencari solusi yang lebih baik

UPD2: konten file utama: 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
apakah build.pyskrip ditetapkan sebagai nilai [tool.poetry].build, atau bagaimana Anda mengikatnya?
Arne

1
@Arne ya, tentu saja itu diikat dalam pyproject.tomlfile. Repo dari pertanyaan berisi semua kode
Ivan Mishalkin

ah, saya tidak melihat bahwa Anda menautkan repo Anda. apakah ini solusi yang tepat untuk Anda, atau Anda masih mencari sesuatu yang lebih baik? Jika cukup baik, pertimbangkan mempostingnya sebagai jawaban yang lengkap.
Arne

@Arne beberapa waktu yang lalu semuanya bekerja dengan baik tanpa solusi seperti itu, jadi saya yakin ada solusi yang lebih baik. Masalahnya adalah bahwa saya tidak tahu, apa yang telah berubah dan di mana mencari bug
Ivan Mishalkin

Jawaban:


0

Menambahkan cython di bagian sistem bangun pyproject.tomlmembantu saya

pyproject.toml:

...
[build-system]
requires = ["poetry>=0.12", "cython"]
...
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.