2016-03-05 20 views
10

Tôi cần phát triển plugin cho GIMP và muốn ở lại với PyCharm để chỉnh sửa Python, v.v.Làm thế nào để sử dụng PyCharm để phát triển plugin GIMP?

FYI, tôi đang sử dụng Windows.

Sau đạo PyCharm sử dụng trình thông dịch Python kèm GIMP:

Project interpreter

Tôi cũng đã thêm một con đường để gimpfu.py để thoát khỏi các lỗi trên from gimpfu import *:

enter image description here

Điều này khắc phục lỗi khi nhập, ngay cả khi được đặt thành Excluded.

tôi đã thử nghiệm với thiết thư mục này để Sources, ResourcesExcluded và vẫn nhận được lỗi cho hằng như RGBA-IMAGE, TRANSPARENT_FILL, NORMAL_MODE vv

enter image description here

Bất kỳ ý tưởng về làm thế nào để bóp méo PyCharm vào chơi tốt cho phát triển plugin GIMP?

Không thực sự chạy bất kỳ mã từ PyCharm, nó thực sự chỉ được sử dụng như một trình soạn thảo mã đẹp, tạo điều kiện kiểm soát sửa đổi, vv

+0

Bạn có gặp phải lỗi thực sự hoặc chỉ cảnh báo? –

+0

Có lẽ đầu mối rất quan trọng: lỗi nói gì? Nếu bạn di chuột qua đường viền đỏ, PyCharm sẽ nói gì? – Ian

+0

Bạn đã thử nhập những điều đó một cách rõ ràng chưa? Tôi sẽ thử 'gimpfu' nhập khẩu, sau đó truy cập vào các hằng số như' gimpfu.RGBA_IMAGE'. – fodma1

Trả lời

4

Như bạn thấy biến này là một phần của .pyd file (dll files cho Python). PyCharm không thể nhận được chữ ký cho nội dung của tệp này.

Đối với nội trang Python (như abs, all, any, v.v.) PyCharm có riêng tệp .py chỉ sử dụng cho chữ ký và tài liệu. Bạn có thể nhìn thấy nó nếu bạn sẽ click vào một số funcs này và đi đến đó là tuyên bố:

enter image description here

PyCharm sẽ mở builtins.py tập tin trong đó là thư mục với nội dung sau:

def abs(*args, **kwargs): # real signature unknown 
    """ Return the absolute value of the argument. """ 
    pass 

def all(*args, **kwargs): # real signature unknown 
    """ 
    Return True if bool(x) is True for all values x in the iterable. 

    If the iterable is empty, return True. 
    """ 
    pass 

def any(*args, **kwargs): # real signature unknown 
    """ 
    Return True if bool(x) is True for any x in the iterable. 

    If the iterable is empty, return False. 
    """ 
    pass 

Như bạn xem các hàm được định nghĩa và được ghi lại, nhưng không có triển khai thực hiện, bởi vì việc thực hiện chúng được tạo bằng C và được đặt ở đâu đó trong tệp nhị phân.

Pycharm không thể cung cấp trình bao bọc như vậy cho mọi thư viện. Thông thường, những người đã tạo các tệp .pyd cung cấp các trình bao bọc .py của họ (ví dụ: mô-đun PyQt: không triển khai thực hiện python gốc, chỉ cần chữ ký).

Có vẻ như GIMP không có trình bao bọc như vậy cho một số biến. Cách duy nhất tôi thấy là tạo ra một số loại trình bao bọc riêng theo cách thủ công. Ví dụ, tạo gimpfu_signatures.py với nội dung sau:

RGBA_IMAGE = 1 
TRANSPARENT_FILL = 2 
NORMAL_MODE = 3 

Và import nó trong khi bạn đang tạo plugin:

from gimpfu import * 
from gimpfu_signatures import * # comment on release 

Không tao nhã, nhưng tốt hơn thì không có gì.

...

Một lưu ý khác về đường dẫn của gimpfu.py. Nếu tôi hiểu đúng, bạn chỉ cần thêm đường dẫn này vào dự án. Nó có thể làm việc, nhưng cách đúng là thêm nó vào PYTHONPATH của dự án (trong các tùy chọn dự án). Xem this link để biết hướng dẫn chi tiết.

+0

Cảm ơn vì điều này. Tôi sẽ đi qua chi tiết vào ngày mai. Tôi sợ cách duy nhất để tiếp cận điều này có thể là một sự nhập khẩu nhân tạo không mong muốn. –

+0

Nếu đây là thứ mà GIMP cần cung cấp, và ai đó sẽ đóng góp nó (tốt nhất là theo cách được cập nhật trong khi xây dựng), thì chúng tôi chắc chắn sẽ chấp nhận điều này vào GIMP. –

+0

Câu trả lời được đưa ra không chính xác là câu trả lời đúng nhưng tôi sẽ trao tiền thưởng. –

Các vấn đề liên quan