tar.gz의 pip 설치와 함께 'Cython'이라는 모듈이 없습니다.


10

Poetry를 사용하여 예제 패키지 ( https://github.com/iamishalkin/cyrtd )의 tar.gz 및 whl 파일을 빌드 한 다음 pipenv 환경 내부에 패키지를 설치하려고합니다. tar.gz 설치가 실패하고 다음은 로그입니다.

$ 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이 설치되었으며 가상 인터프리터에서 호출 할 수 있습니다. 로그에서도 Cython에 대한 요구 사항이 충족됩니다. 이상한 점-몇 달 전에 모든 것이 잘 작동했습니다. 나는 또한 conda venv, 업그레이드 된 cython 및시를 시도했지만 아무것도 도움이되지 못했습니다. Cython 으로 setup_requires 에서 약하게 관련된 해결 방법을 시도 했습니까? -아직 운이 없다

UPD : https://luminousmen.com/post/resolve-cython-and-numpy-dependencies : 여기에 더러운 해결 방법이 있습니다.

아이디어는 추가하는 것입니다

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

Cython.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) ... 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

더 나은 솔루션을 찾고 있습니다

UPD2 : 메인 파일 내용 : 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
는 IS build.py의 값으로 스크립트 세트 [tool.poetry].build, 또는 어떻게 당신이 그것을 결합 하는가?
Arne

1
@Arne 예, 물론 pyproject.toml파일에 바인딩되어 있습니다. 질문의 repo는 모든 코드를 포함합니다
Ivan Mishalkin

아, 당신이 당신의 레포를 연결하는 것을 보지 못했습니다. 이것이 당신에게 적합한 해결책입니까, 아니면 여전히 더 나은 것을 찾고 있습니까? 충분하면 자체 답변으로 게시하는 것이 좋습니다.
Arne

@ Arne 얼마 전에 모든 해결 방법없이 모든 것이 잘 작동 했으므로 더 나은 솔루션이 있다고 확신합니다. 문제는 내가 모르는 것, 무엇이 바뀌었고 버그를 찾아야하는 곳
Ivan Mishalkin

답변:


0

빌드 시스템 섹션에 cython을 추가하면 pyproject.toml도움이되었습니다.

pyproject.toml:

...
[build-system]
requires = ["poetry>=0.12", "cython"]
...
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.