Mengapa saya tidak dapat mengimpor skrip saya dari konsol python?

9

saya bekerja dengan konsol python qgis. Saya biasanya menyimpan semua skrip python saya ke ~ / Scripts / python. Saya telah mengatur PYTHONPATH menjadi ~ / Scripts / python di .bashrc saya. Namun, saya tidak dapat mengatur untuk mengimpor sripts saya dari konsol di dalam QGIS.

Ini kesalahan saya ketika saya mencoba mengimpor skrip bernama 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

Bagaimana cara mengatur PYTHONPATH untuk pygis?

Renaud
sumber
1
Coba tambahkan ~/Scripts/pythonke PATH yang biasanya berfungsi untuk saya. Periksa denganimport os; os.path
Nathan W

Jawaban:

11

Di konsol Python jalankan yang berikut:

import sys
sys.path

Lihat apakah entri PYTHONPATH Anda terdaftar. Saya kira tidak, karena variabel lingkungan itu mungkin tidak tersedia untuk menjalankan Python QGIS.

Untuk menambahkan folder skrip Anda ke sys.path konsol, lakukan append reguler ():

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

Maka Anda harus dapat mengimpor modul Anda dari sana untuk sesi konsol itu. Saya sarankan memperluas ~ ke jalur home penuh pengguna Anda (tidak yakin apakah Python ~ ekspansi).

EDIT : ~ ekspansi tampaknya tidak didukung oleh sys.path (setidaknya untuk Mac).

Konsol Python QGIS dibuat oleh modul Python, 'console.py'. Jadi, jika Anda ingin menambahkan jalur kustom Anda ke sys.path dengan cara yang lebih permanen, edit file console.py dan tambahkan pernyataan sys.path.append ('path / to / my / scripts') setelah modul bagian impor.

console.py terletak di sini (untuk Mac, menggunakan paket QGIS KyngChaos.com ):

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

Tentu saja, ini adalah hack yang akan dihapus dan harus diulang pada pembaruan QGIS.app.

Penyesuaian apa pun untuk sys.path interpreter QGIS Python yang sedang berjalan juga tersedia untuk plugin lain.

Alternatif yang lebih aman mungkin adalah membuat plugin PyQGIS pengembangan sederhana yang memuat dan hanya melakukan sys.path.append (), kapan pun Anda menginginkannya. Itu juga bisa menghapus jalur itu dari sys.path pada plugin unload (). Saya belum menguji apakah penyesuaian sys.path dari plugin semacam itu akan tersedia di konsol yang sudah dimuat (saya kira, itu akan menjadi.)

dakcarto
sumber
Hack Anda bekerja dengan baik untuk saya sejauh ini. Terima kasih banyak. Di ubuntu 12.04, file tersebut berada di /usr/share/pyshared/qgis/console.py
Renaud
Luar biasa! Omong-omong, saya perlu me-restart QGIS saya pada Windows 7 untuk membuat konsol Python mengetahui jalan yang ditambahkan.
Dirk