ใช้ Atlas จาก scipy


13

ฉันติดตั้ง Ubuntu 12.04 64 บิต ฉันต้องการทำงานกับ python และ scipy ฉันติดตั้งพวกมันและเมื่อฉันทำการทดสอบ:

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

ฉันได้รับข้อความ:

ImportError: libatlas.so.3gf: ไม่สามารถเปิดไฟล์วัตถุที่ใช้ร่วมกัน: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว

แต่ผมมีห้องสมุด libatlas /usr/lib/atlas-baseติดตั้งภายใต้ไดเรกทอรี ฉันรู้ว่าฉันสามารถคัดลอกไฟล์ได้โดยตรงภายใต้/usr/libแต่ฉันสงสัยว่าฉันสามารถตั้งค่า scipy เพื่อใช้งานไลบรารี่ได้usr/lib/atlas-baseอย่างไร?


โปรดอย่าข้ามโพสต์
Karlson

ตกลงลบออกแล้วตอนนี้
lmsasu

คำตอบ:


19

คุณไม่ต้องคัดลอกอะไรเลย

คุณควรเพิ่มไลบรารี atlas ในรายการตำแหน่งที่ldจะค้นหา

ในไดเรกทอรีคุณสามารถเพิ่มไฟล์/etc/ld.so.conf.d atlas-lib.confไฟล์นี้ควรมีไดเรกทอรีของซึ่งเป็นlibatlas.so.3gf/usr/lib/atlas-base

คุณสามารถทำได้โดยการเรียกใช้

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

ในที่สุดก็วิ่ง

sudo ldconfig

เพื่ออัปเดตldเพื่อให้ทราบเกี่ยวกับไฟล์ใหม่นี้

หรือคุณสามารถตั้งค่าLD_LIBRARY_PATHให้รวมเส้นทางไปยังไลบรารีเมื่อคุณเรียกใช้และควรจะพร้อมใช้งานภายใน SciPy


ฉันไม่แน่ใจว่า atlas-lib.conf ช่วยได้หรือไม่ แต่ LD_LIBRARY_PATH ได้ทำการหลอกลวง
lmsasu

1
@lmsasu เมื่อคุณสร้างไฟล์นั้นคุณจะต้องเรียกใช้sudo ldconfigเพื่อให้มันใช้งานได้
Karlson

หากคุณไม่มีสิทธิ์เข้าถึงรูทวิธีใดจะเป็นวิธีที่ดีที่สุด ถ้าคุณจะทำมันด้วยvirtualenvคุณจะทำอย่างไรในกรณีนั้น?
อัลเบิร์ต

1
@Albert Using virtualenvเป็นหัวเรื่องที่แยกจากกันอย่างสมบูรณ์ แต่ไม่มีการเข้าถึงรูทคุณสามารถตั้งค่าLD_LIBRARY_PATHในลักษณะที่เหมาะสมซึ่งได้กล่าวไว้ในคำตอบ
Karlson

สิ่งเหล่านี้ควรได้รับการจัดการโดยแพคเกจ numpy / scipy หรือ libatlas-dev ใช่ไหม? ฉันมีสถานการณ์ที่น่าสนใจที่ระบบ numpy 1.9.1 ทำงานได้ดี แต่ numpy 1.9.2 ใน virtualenv แสดงปัญหานี้ อย่างไรก็ตามโซลูชันของคุณได้แก้ไขแล้ว ขอบคุณ.
drevicko

1

สำหรับฉันแล้วใช้ virtualenv export LD_LIBRARY_PATH=/usr/lib/atlas-base/:${LD_LIBRARY_PATH}ในตอนท้ายของ.bashrcไฟล์ของฉันแก้ไข

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.