วิธีการเข้าถึงโมดูล QGIS จาก virtualenv ของฉัน


12

ฉันใช้ Ubuntu 14.4 และฉันได้ติดตั้งสภาพแวดล้อมเสมือนของหลาม จากนั้นฉันก็ติดตั้งไพ ธ อนหลายไลบรารี (gdal, lxml, psycopg2 และอื่น ๆ )

นอกจากนี้ในระบบของฉันฉันมีโมดูลสำหรับ QGIS ดังนั้นเมื่อฉันพิมพ์หลามแล้วฉันสามารถนำเข้าโมดูลนี้เป็น:

import qgis.core

แต่เมื่อฉันพยายามทำสิ่งเดียวกันผ่าน virtualenv ฉันได้รับข้อผิดพลาด: ไม่พบโมดูล

เมื่อฉันสร้าง virtualenv ฉันทำกับตัวเลือก:

virtualenv --no-site-packages env

ซึ่ง จำกัด env ของฉันจาก env ของระบบ คำถามคือวิธีการเข้าถึงโมดูล QGIS ใน virtualenv ของฉัน


1
สิ่งนี้อาจช่วยได้ ยังไม่ได้ลองด้วยตัวเอง
Nate Wanner

1
สิ่งนี้อาจช่วยได้ ยังไม่ได้ลองด้วยตัวเอง
Matthias Kuhn

คำตอบ:


1

หลังจากสร้างและเปิดใช้งาน virtualenv ของคุณ:

virtualenv --no-site-packages env
source env/bin/activate
pip install [your libs]

คุณต้องกำหนดตัวแปรสภาพแวดล้อม PYTHONPATH ให้กับเส้นทางการติดตั้ง python ของ QGIS ของคุณ

โปรดเปลี่ยน [qgispath] เป็นเส้นทางของ qgis ของคุณ:

export PYTHONPATH=/[qgispath]/share/qgis/python

นอกจากนี้ยังจำเป็นต้องตั้งค่า LD_LIBRARY_PATH

export LD_LIBRARY_PATH=/[qgispath]/lib

เพื่อป้องกันข้อผิดพลาดนี้

>>> import qgis.core
ImportError: libqgis_core.so.1.5.0: cannot open shared object file: No such file or directory

pythonpath ของคุณถูกตั้งค่าสำหรับ virtualenv และเซสชันของคุณเท่านั้น หากคุณต้องการตั้งค่าโดยอัตโนมัติภายใต้ virtualenv นี้คุณสามารถสร้างไฟล์ภายใต้ env/lib/python2.7/site-packagesไฟล์. pth

วิธีที่สะดวกที่สุดคือการเพิ่มไฟล์การกำหนดค่าพา ธ ไปยังไดเรกทอรีที่มีอยู่ในพา ธ ของ Python โดยปกติจะอยู่ในไดเรกทอรี ... / site-packages / directory ไฟล์การกำหนดค่าเส้นทางมีนามสกุลเป็น. pth และแต่ละบรรทัดจะต้องมีเส้นทางเดียวที่จะผนวกเข้ากับ sys.path (เพราะเส้นทางใหม่ถูกผนวกเข้ากับ sys.path โมดูลในไดเรกทอรีที่เพิ่มจะไม่แทนที่โมดูลมาตรฐาน. ซึ่งหมายความว่าคุณไม่สามารถใช้กลไกนี้สำหรับการติดตั้งรุ่นคงที่ของโมดูลมาตรฐาน.) แหล่งที่มา

เพื่อสร้างและเติมไฟล์ให้ใช้คำสั่งเช่นนั้น:

cat > [yourVirtualEnv]/lib/python2.7/site-packages/qgispythonpath.pth << /[qgispath]/share/qgis/python

พบในตำราอาหาร Python Qgis และชุดคำตอบที่เกี่ยวข้องกับpythonpath

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