Không có cách nào để thực hiện việc này dưới dạng một bước, nhưng thật dễ dàng để thực hiện quy trình hai bước.
Sử dụng:
python bootstrap.py
./bin/buildout install cython
./bin/cpy bootstrap.py
./bin/cpy ./bin/buildout
Lý do này có thể là bởi vì buildout hỗ trợ một tùy chọn vô danh 'cài đặt' mà không ai nói về, nhưng bạn thể sử dụng nó, như thế này:
[buildout]
parts = deps py # <---- Notice we don't depend on cython here
eggs =
whatever
kdist
nark
kivy # <--- But we do have a module that requires cython to build
develop =
.
lib/nark
lib/kivy-dist
[cython] # <---- By calling ./bin/buildout install cython we trigger this
recipe = zc.recipe.egg:script
parts = cython-py
interpreter = cpy # <--- Which makes our dummy ./bin/cpy
eggs =
cython
pyinstaller
[deps]
recipe = zc.recipe.egg:eggs
eggs = ${buildout:eggs}
[py]
recipe = zc.recipe.egg:script
interpreter = py
eggs = ${buildout:eggs}
Điều dễ thương về cách tiếp cận này là chạy buildout lần thứ hai xóa thư mục bin vì vậy vào cuối ngày, bạn còn lại với một thư mục bin ooks như thế này:
$ ls bin/
buildout garden py
Không có gói thừa nào có thể hoặc không được treo xung quanh trong virtualenv và vít những thứ sau này. Đó là lý do tại sao chúng tôi đang sử dụng buildout ngay từ đầu?
... tất nhiên, nếu bạn muốn cython để treo xung quanh, juts dính nó vào các phụ thuộc ở đầu trang là tốt.
Bạn có chắc chắn Cython đã được cài đặt đúng chưa và bạn đã đặt biến môi trường 'PYTHONPATH' để bao gồm thư mục nơi các mô-đun Cython sống? –
Ý của bạn là ở cấp hệ thống? Điều này sẽ làm cho việc xây dựng này không thể được triển khai trên một hệ thống không có cython ...? –
Bạn có ý nghĩa gì với "mức hệ thống"? –