8

Bởi vì matplotlib cần phải được cài đặt sẵn, tôi đã gặp sự cố.Làm thế nào để cài đặt matplotlib trên cây đậu đàn hồi

Để cài đặt các gói python khác trên môi trường Elastic Beanstalk của tôi, tôi sử dụng tệp pip requirements.txt. Bởi vì cấu hình thiết lập tự động cài đặt các gói theo thứ tự bảng chữ cái, nên matplotlib luôn được cài đặt trước, gây ra lỗi.

Có ai gặp sự cố này và biết cách khắc phục thành công không?

Trả lời

7

Tôi đã đánh đầu vào tường với điều này trong vài ngày nhưng có vẻ như nếu bạn muốn cài đặt matplotlib/scipy/scikit-learn bằng cách sử dụng tệp requirements.txt, bạn cần phải thực hiện một mô-đun tại một thời điểm .

Những gì tôi có thể hiểu được là trên gói Beanstalk Elastic không được cài đặt trong thư mục site-package của môi trường ảo cho đến khi nó đã làm việc thành công theo cách của nó thông qua toàn bộ tệp requirements.txt. Vì vậy, ví dụ nếu bạn cố gắng cài đặt gọn gàng và scipy cùng một lúc, như tôi đã làm, nó sẽ thất bại vì scipy không thể tìm thấy các mô-đun numpy nhất định (numpy.distutils.core cụ thể). Ví dụ: 0. Numpy đang ngồi ở số /opt/python/run/venv/build đang đợi để đi nhưng pip đang tìm kiếm trong /opt/python/run/venv/lib/python2.6/site-packages và không tìm thấy khối u.

Bạn cần thực hiện một cam kết chỉ với một phần nhỏ gọn trong tệp requirements.txt và đẩy điều này lên Cây đậu đàn hồi. Nếu điều này thành công mô-đun numpy sẽ được ở đúng nơi và sau đó bạn có thể thực hiện một cam kết thứ hai với các yêu cầu cập nhật để scipy hoặc matplotlib trong trường hợp của bạn.

Hãy cẩn thận với tệp cấu hình của bạn trong .ebextensions, bạn cần phải có tất cả các phụ thuộc được liệt kê. Cụ thể, ở phía trên cùng của .ebextensions/myapp.config bạn nên có

packages: 
    yum: 
    gcc-c++: [] 
    gcc-gfortran: [] 
    python-devel: [] 
    atlas-sse3-devel: [] 
    lapack-devel: [] 
    libpng-devel: [] 
    freetype-devel: [] 
    zlib-devel: [] 

atlas-sse3-devellapack-devel là cần thiết nếu bạn muốn scipy và libpng-devel, freetype-devel, và zlib-devel là cần thiết cho matplotlib.

Phương án thay thế khác là SSH đối với cá thể ec2 được liên kết với ứng dụng của bạn trên Cây đậu đàn hồi, khởi động môi trường ảo (source /opt/python/run/venv/bin/activate) và tự cài đặt gói.

+0

Cảm ơn một tấn! Điều đó đã giết chết tôi. Câu trả lời của bạn khiến nó hoạt động. – TeePaps

+0

Không sao cả. Nếu bạn chưa làm như vậy, lời khuyên của tôi là tạo một AMI tùy chỉnh từ thể hiện làm việc của bạn để bạn có thể tái sử dụng cài đặt nếu bạn tắt nó hoặc triển khai một nhánh khác. – nsecord

+1

Tôi đã không làm như vậy, nhưng tôi chắc chắn sẽ. – TeePaps

Các vấn đề liên quan