ทำไมฉันไม่สามารถนำเข้าสคริปต์ของฉันจากคอนโซลหลามได้


9

ฉันทำงานกับคอนโซล qgis python ฉันมักจะเก็บสคริปต์ python ทั้งหมดของฉันไว้ใน ~ / Scripts / python ฉันได้ตั้ง PYTHONPATH เป็น ~ / Scripts / python ใน. bashrc ของฉันอย่างไรก็ตามฉันไม่สามารถจัดการนำเข้า sript ของฉันจากคอนโซลภายใน QGIS ได้

นี่เป็นข้อผิดพลาดของฉันเมื่อฉันพยายามนำเข้าสคริปต์ชื่อ Create_Figures_2D

import Create_Figures_2D
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/qgis/utils.py", line 309, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
ImportError: No module named Create_Figures_2D

ฉันจะตั้งค่า PYTHONPATH สำหรับ pygis ได้อย่างไร


1
ลองเพิ่ม~/Scripts/pythonใน PATH ที่ปกติใช้กับฉัน ตรวจสอบกับimport os; os.path
นาธาน W

คำตอบ:


11

ในคอนโซล Python ให้เรียกใช้สิ่งต่อไปนี้:

import sys
sys.path

ดูว่ารายการ PYTHONPATH ของคุณอยู่ในรายการหรือไม่ ฉันคาดเดาไม่ได้เนื่องจากตัวแปรสภาพแวดล้อมอาจไม่พร้อมใช้งานสำหรับ Python ที่ทำงานของ QGIS

ในการเพิ่มโฟลเดอร์สคริปต์ของคุณไปยังคอนโซลของ sys.path ให้เพิ่ม append ():

sys.path.append('~/Scripts/python')

จากนั้นคุณควรจะสามารถนำเข้าโมดูลของคุณได้จากที่นั่นสำหรับคอนโซลเซสชันนั้น ฉันขอแนะนำให้ขยาย ~ ไปยังพา ธ เต็มของผู้ใช้

แก้ไข : ~ การขยายตัวไม่ได้รับการสนับสนุนโดย sys.path (บน Mac อย่างน้อย)

คอนโซล Python ของ QGIS สร้างขึ้นโดยโมดูล Python คือ 'console.py' ดังนั้นหากคุณต้องการเพิ่มเส้นทางที่กำหนดเองของคุณไปยัง sys.path อย่างถาวรให้แก้ไขไฟล์ console.py และเพิ่มคำสั่ง sys.path.append ('path / to / my / สคริปต์') หลังโมดูล ส่วนการนำเข้า

console.py อยู่ที่นี่ (สำหรับ Mac โดยใช้แพ็คเกจ KyngChaos.com QGIS ):

/Applications/QGIS.app/Contents/Resources/python/qgis/console.py

แน่นอนว่านี่คือแฮ็คที่จะถูกลบและจะต้องมีการทำซ้ำในการอัปเดต QGIS.app

การปรับเปลี่ยนใด ๆ กับ sys.path ของ QGIS Python ที่กำลังรันอยู่มีให้สำหรับปลั๊กอินอื่นเช่นกัน

ทางเลือกที่ปลอดภัยกว่าคือการสร้างปลั๊กอิน PyQGIS ที่เรียบง่ายและพัฒนาขึ้นมาซึ่งโหลดและทำเพียงแค่ sys.path.append () ทุกครั้งที่คุณต้องการ มันสามารถลบพา ธ นั้นออกจาก sys.path บน unload plugin () ฉันยังไม่ได้ทดสอบว่าการปรับ sys.path ของปลั๊กอินดังกล่าวจะมีอยู่ในคอนโซลที่โหลดแล้วหรือไม่ (ฉันเดาว่ามันน่าจะเป็น)


แฮ็คของคุณใช้งานได้ดีสำหรับฉันจนถึงตอนนี้ ขอบคุณมาก ๆ เมื่อ Ubuntu 12.04 ไฟล์นั้นอยู่ที่ /usr/share/pyshared/qgis/console.py
Renaud

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