Tại sao tôi không thể nhập tập lệnh của mình từ bảng điều khiển python?


9

tôi đang làm việc với giao diện điều khiển trăn qgis. Tôi thường lưu trữ tất cả các tập lệnh python của mình vào ~ / ScScript / python. Tôi đã đặt PYTHONPATH thành ~ / ScScript / python trong .bashrc của tôi.

Đây là lỗi của tôi khi tôi cố gắng nhập một tập lệnh có tên là Tạo_ hình_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

Làm cách nào để thiết lập PYTHONPATH cho pygis?


1
Hãy thử thêm ~/Scripts/pythonvào PATH thường làm việc cho tôi. Kiểm tra nó vớiimport os; os.path
Nathan W

Câu trả lời:


11

Trong bảng điều khiển Python chạy như sau:

import sys
sys.path

Xem nếu mục PYTHONPATH của bạn được liệt kê. Tôi đoán là không, vì biến môi trường đó có thể không có sẵn cho Python đang chạy của QGIS.

Để thêm thư mục tập lệnh của bạn vào sys.path của giao diện điều khiển, hãy thêm một phần thường ():

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

Sau đó, bạn sẽ có thể nhập các mô-đun của mình từ đó cho phiên giao diện điều khiển đó. Tôi khuyên bạn nên mở rộng ~ đến đường dẫn nhà đầy đủ của người dùng của bạn (không chắc Python có mở rộng ~ không).

EDIT : ~ mở rộng dường như không được hỗ trợ bởi sys.path (ít nhất là trên Mac).

Bảng điều khiển Python của QGIS được tạo bởi mô-đun Python, 'console.py'. Vì vậy, nếu bạn muốn thêm đường dẫn tùy chỉnh của mình vào sys.path theo cách lâu dài hơn, hãy chỉnh sửa tệp console.py và thêm câu lệnh sys.path.append ('path / to / my / scripts') sau mô-đun phần nhập khẩu.

console.py được đặt tại đây (dành cho Mac, sử dụng gói QGIS của KyngChaos.com ):

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

Tất nhiên, đây là một bản hack sẽ bị xóa và phải được làm lại trên bản cập nhật của QGIS.app.

Mọi điều chỉnh đối với sys.path của trình thông dịch PythonIS đang chạy cũng có sẵn cho các plugin khác.

Một cách khác an toàn hơn có thể là tạo một plugin PyQGIS đơn giản, phát triển, tải và chỉ đơn giản là sys.path.append (), bất cứ khi nào bạn muốn. Nó cũng có thể xóa đường dẫn đó khỏi sys.path trên plugin unload (). Tôi chưa kiểm tra xem liệu điều chỉnh sys.path của một plugin như vậy có khả dụng trong bảng điều khiển đã được tải hay không (tôi đoán là vậy.)


Hack của bạn đang hoạt động tốt cho tôi cho đến nay. Cảm ơn bạn rất much.On Ubuntu 12.04, các tập tin được đặt tại /usr/share/pyshared/qgis/console.py
Renaud

Thông minh! Nhân tiện, tôi cần khởi động lại QGIS của mình trên Windows 7 để làm cho bảng điều khiển Python nhận biết đường dẫn được nối thêm.
Dirk
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.