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']
})
@Arne 예, 물론
—
Ivan Mishalkin
pyproject.toml
파일에 바인딩되어 있습니다. 질문의 repo는 모든 코드를 포함합니다
아, 당신이 당신의 레포를 연결하는 것을 보지 못했습니다. 이것이 당신에게 적합한 해결책입니까, 아니면 여전히 더 나은 것을 찾고 있습니까? 충분하면 자체 답변으로 게시하는 것이 좋습니다.
—
Arne
@ Arne 얼마 전에 모든 해결 방법없이 모든 것이 잘 작동 했으므로 더 나은 솔루션이 있다고 확신합니다. 문제는 내가 모르는 것, 무엇이 바뀌었고 버그를 찾아야하는 곳
—
Ivan Mishalkin
build.py
의 값으로 스크립트 세트[tool.poetry].build
, 또는 어떻게 당신이 그것을 결합 하는가?