Sử dụng Atlas từ scipy


13

Tôi đã cài đặt Ubuntu 12.04 64 bit. Tôi cần phải làm việc với python và scipy, tôi đã cài đặt chúng và khi tôi chạy thử nghiệm:

python -c "import scipy; scipy.test()"

Tôi nhận được tin nhắn:

ImportError: libatlas.so.3gf: không thể mở tệp đối tượng được chia sẻ: Không có tệp hoặc thư mục như vậy

Tuy nhiên, tôi có các thư viện libatlas được cài đặt trong thư mục /usr/lib/atlas-base. Tôi biết tôi có thể sao chép các tập tin trực tiếp bên dưới /usr/lib, nhưng tôi tự hỏi làm thế nào tôi có thể thiết lập scipy để sử dụng các thư viện từ usr/lib/atlas-base?


Xin đừng qua bài.
Karlson

Ok, loại bỏ ngay bây giờ.
lmsasu

Câu trả lời:


19

Bạn không phải sao chép bất cứ điều gì ở bất cứ đâu.

Bạn nên thêm các thư viện atlas vào danh sách các vị trí ldsẽ tìm kiếm.

Trong thư mục /etc/ld.so.conf.dbạn có thể thêm tập tin atlas-lib.conf. Tập tin này nên chứa thư mục của libatlas.so.3gf, đó là /usr/lib/atlas-base.

Bạn có thể làm điều này bằng cách chạy

echo "/usr/lib/atlas-base" | sudo tee /etc/ld.so.conf.d/atlas-lib.conf

Cuối cùng chạy

sudo ldconfig

để cập nhật ldđể nó biết về tập tin mới này.

Ngoài ra, bạn có thể đặt LD_LIBRARY_PATHđể bao gồm đường dẫn đến thư viện khi bạn chạy và nó sẽ có sẵn trong SciPy.


Tôi không chắc liệu atlas-lib.conf có giúp ích được không, nhưng LD_LIBRARY_PATH đã thực hiện thủ thuật này.
lmsasu

1
@lmsasu Khi bạn tạo tệp đó, bạn sẽ cần chạy sudo ldconfigđể kích hoạt nó
Karlson

Nếu bạn không có quyền truy cập root, cách tiếp cận tốt nhất là gì? Nếu bạn sẽ làm điều đó với virtualenv, bạn sẽ làm thế nào trong trường hợp đó?
Albert

1
@Albert Sử dụng virtualenvlà một chủ đề hoàn toàn riêng biệt nhưng không có quyền truy cập root, bạn có thể thiết lập LD_LIBRARY_PATHmột cách thích hợp được đề cập trong câu trả lời.
Karlson

Loại điều này nên được xử lý bởi các gói numpy / scipy hoặc libatlas-dev, không? Tôi có một tình huống thú vị khi hệ thống numpy 1.9.1 hoạt động tốt, nhưng numpy 1.9.2 trong một virtualenv thể hiện vấn đề này. Dù sao, giải pháp của bạn đã sửa nó. cám ơn.
drevicko

1

Đối với tôi, bằng cách sử dụng virtualenv, export LD_LIBRARY_PATH=/usr/lib/atlas-base/:${LD_LIBRARY_PATH}ở cuối .bashrctập tin của tôi đã sửa nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.