Tôi sử dụng Thơ để xây dựng các tệp tar.gz và whl cho gói ví dụ của mình ( https://github.com/iamishalkin/cyrtd ) và sau đó thử cài đặt gói trong môi trường pipenv. cài đặt tar.gz không thành công và đây là một phần của bản ghi:
$ 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 được cài đặt và có thể gọi được từ trình thông dịch ảo. Ngay cả trong nhật ký được viết, các yêu cầu đối với cython cũng được thỏa mãn. Điều gì là lạ - mọi thứ đã hoạt động tốt vài tháng trước. Tôi cũng đã thử conda venv, nâng cấp cython và thơ, không có gì giúp được. Cũng đã thử cách giải quyết liên quan yếu từ setup_Vquires với Cython? - vẫn không gặp may
CẬP NHẬT : Tôi tìm thấy một số cách giải quyết bẩn ở đây: https://lumbomen.com/post/resolve-cython-and-numpy-dependencies
Ý tưởng là để thêm
from setuptools import dist
dist.Distribution().fetch_build_eggs(['cython'])
trước khi nhập Cython.
Sau này tôi nhận được các bản ghi này:
$ 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
Vẫn đang tìm kiếm một giải pháp tốt hơn
UPD2: nội dung tập tin chính: 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']
})
pyproject.toml
tập tin. Repo từ câu hỏi chứa tất cả các mã
build.py
bộ kịch bản như giá trị trong[tool.poetry].build
, hoặc làm thế nào để bạn gắn nó?