Spams Lib và Những Tâm Sự

2015/02/25

Không còn gì sung sướng hơn sau 2 ngày ngồi cài cái khỉ gió sparse coding lib cho python, link cái thằng khỉ gió nó ở đây: Spams lib. Mặc dù đã cố gắng nhưng phải mất mấy tiếng đồng hồ mình mới xong được cu cậu này.

Sau đây là một số kinh nghiệm xương máu mình có thể rút ra như sau:

  1. Không giống như cu Linux hay các bản distro của nó. Trên Mac có 2 cái package manager: MacPorts và HomeBrew. Mà 2 cái này nó lại đẻ ra một số chuyện linh ta linh tinh:

    • Chúng cài đặt các phần mềm ở những chỗ khác nhau, như cu MacPorts nhét trong /opt/local/bin/, cu kia thì kinh dị hơn, nhét trong /usr/local/Cellar/ làm mình chả biết đường nào mà lần.

    • Tất cả các đồng chí trên đều đưa đường dẫn đến $PATH, và rồi hầm bà lằng các conflict xuất hiện khiến mình muốn điên đầu.

    • Bài học tổng kết: chỉ nên xài 1 trong 2 cu

  2. Không nên tin tưởng hàng của Apple cho lắm, cu cậu chế ra các thứ quá là điên:

    • Trình biên dịch của Apple chế ra một số options mà ta phải kể đến như cái -arch chết dịch, ngoài ra còn có cu warning -Wshorten64-to-32. Python tự generate ra những option dựa trên hệ điều hành đang dùng, khổ một cái, cái compiler mình dùng lại không support cho mấy cái chuyện đó.

    • Ngoài ra, clang của Apple còn không hỗ trợ cả OpenMP, mà cái này bắt buộc phải có trong cái sparse coding lib này. Đại khái nó cứ luẩn quẩn.

    • Chưa hết, trong setup.py cu này để option mặc định là -m32, tức là sử dụng kiến trúc 32bit. Máy mình lại là 64bit. Sửa lại thì được nhưng lại phải chọn kiến trúc trong file thực thi của python.

Đại khái là xoắn. Giờ thì mình đã biết cách giải quyết:

  1. Cài python từ trang chủ.

  2. Xác định đường dẫn chính thức của nó, mò xem nó ở đâu và add vô trong $PATH.

  3. Sử dụng Superpack để cài các gói liên quan trong scipy. link nó đây. Trong này thì lưu ý cái biên $PIP, sửa lại cho phù hợp với cái máy của mình.

  4. Đối với cu numpy và scipy thì cài đặt thông qua pip.