TL; DR: bỏ qua đoạn cuối để biết cách tăng dung lượng trao đổi và tránh tắc nghẽn bộ nhớ. Ngoài ra, không sử dụng pip cho numpy và scipy.
Để có được phiên bản mới nhất của scipy trên mâm xôi Pi, bạn cần xây dựng từ nguồn. Lý do chính là scipy dựa vào các thư viện C và fortran đã biên dịch, cần được biên dịch trên cùng một kiến trúc. Thông thường pip install
sẽ tìm nạp các gói dựng sẵn cho bạn, nhưng kiến trúc ARM của Raspberry Pi không thực sự được hỗ trợ.
Nếu đây là tất cả những gì bạn cần thì nó sẽ tương đối dễ dàng (có thể tìm thấy hướng dẫn chính ở đây và được tóm tắt bên dưới), nhưng có một vấn đề khác với pi mâm xôi mà tôi nhận ra chỉ sau một tuần nghiên cứu và dùng thử và lỗi (bỏ qua tại kết thúc nếu bạn chỉ cần sửa chữa), đó là do, tôi tin rằng, với số lượng nhỏ bộ nhớ có sẵn.
Tôi sẽ chỉ thử và tóm tắt toàn bộ quá trình (để mọi người không phải truy cập internet như tôi đã làm).
Yêu cầu
Có một vài yêu cầu để xây dựng scipy. Theo như các gói python đi, bạn sẽ cần numpy
, cython
, setuptools
, và (nếu bạn muốn xây dựng các tài liệu hướng dẫn) Sphinx
. Bạn nên thử và sử dụng phiên bản của các gói đi kèm với Raspbian (trong các gói như python3-numpy
), nhưng chúng có thể cần được xây dựng riêng (OT).
Theo yêu cầu hệ thống, bạn sẽ cần một vài gói có thể được cài đặt apt-get
, cụ thể là:
- Một thư viện toán học BLAS / LAPACK với các tiêu đề phát triển, ví dụ
libopenblas-base
và libopenblas-dev
;
python-dev
;
- Trình biên dịch C và Fortran,
gcc
và gfortran
;
Cuối cùng, bạn cần mã nguồn, mà bạn có thể tải xuống từ đây (Scipy 1.0.0 là phiên bản ổn định mới nhất như tôi đang viết). Sau đó, nó chỉ là một vấn đề của
tar -xzvf scipy-v1.0.0.tar.gz
cd scipy
Tổng hợp nguồn
Tại thời điểm này, nếu bạn bắt đầu quá trình xây dựng, nó có vẻ sẽ ổn, nhưng nó sẽ bị treo sau vài phút.
Thêm không gian hoán đổi lớn hơn
Điều này là do tập lệnh biên dịch chiếm toàn bộ RAM và bộ nhớ trao đổi bằng cách sinh ra nhiều quá trình (và sao chép bộ nhớ theo hệ quả). Vấn đề là trong Raspberry Pi, không gian hoán đổi đặc biệt nhỏ (chỉ 100 MB tôi nghĩ), trong khi định mức sẽ là có cùng kích thước RAM của bạn.
Như đã giải thích ở đây và ở đây , không gian hoán đổi có thể được tăng lên như sau:
sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo /sbin/mkswap /var/swap.1
sudo chmod 600 /var/swap.1
sudo /sbin/swapon /var/swap.1
sẽ cung cấp cho bạn 1GB dung lượng trao đổi.
Sau đó, người ta cuối cùng có thể xây dựng và cài đặt với
python3 setup.py build
python3 setup.py install --user
(bạn có thể bỏ --user flag
nếu bạn muốn cài đặt toàn hệ thống, nhưng bạn sẽ cần đặc quyền root).
Cuối cùng, người ta loại bỏ trao đổi thêm và khôi phục mặc định:
sudo swapoff /var/swap.1
sudo rm /var/swap.1