কিউজিআইএস প্লাগইন: রিসোর্স (রিসোর্স_সিআর) ফাইল আমদানি করতে সমস্যা - প্লাগইন লোড হয় না - PATH সমস্যা?


13

আমি কিগিস প্লাগইন তৈরি করছি এবং আমি এই ত্রুটির সমাধান খুঁজে পাচ্ছি না।

File "/usr/lib/python2.7/dist-packages/qgis/utils.py", line 478, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
ImportError: No module named resources_napoved_rc

প্রত্যেকের জন্য যারা জিজ্ঞাসা করবে আমি পাইথন রিসোর্স ফাইল তৈরি করেছি:

pyrcc4 -o resources_napoved_rc.py resources_napoved.qrc

এটি এখনও কাজ করার উপায় খুঁজে পাচ্ছি না। আমি সবসময় একই ত্রুটি পেতে।

আমার কাছে স্ক্রিপ্টের শীর্ষে:

import resources_napoved_rc.py

আমি Qtbuilder থেকে সরাসরি ইউআই ফাইল ব্যবহার করছি। কোন ধারণা কিভাবে এগিয়ে যেতে? আমি ধরে নিচ্ছি এটি অবশ্যই কোনও ধরণের পথ সমস্যা বা অনুরূপ কিছু হতে পারে।


No module named resources_napoved_rcএবং pyrcc4 -o resources_napoved_rc.py resources_napoved.qrcবা এটি একটি টাইপিং ত্রুটি?
জিন

না এটা টাইপো নয় আমি আরসি প্রত্যয় যুক্ত করেছি কারণ দেখে মনে হচ্ছে এটি সর্বদা ফাইলের শেষে সিসি খুঁজছে এমনকি আপনি file.qrcইউআই ফাইলে পাস করলেও । (খুব আশ্চর্যজনক) আমি সমস্ত সম্ভাব্য সংমিশ্রণও চেষ্টা করেছিলাম:pyrcc4 -o resources_napoved_rc.py resources_napoved_rc.qrc
গ্রেগ

এটিকে .পি ছাড়া এটিকে আমদানি করার চেষ্টা করুনimport resources_napoved_rc
মার্টিন

উত্তর:


19

uicসঠিকভাবে কাজ না করার কারণে এই সমস্যা হয় । আমি ঠিক কেন তা নিশ্চিত নই তবে আমি লক্ষণগুলি এবং কার্যকারিতাটি দেখাতে পারি।

প্রাথমিক প্লাগইন .uiফাইলটিতে একটি খালি resourcesউপাদান রয়েছে:

<resources/>

আপনি যখন QtDesigner এ প্লাগইনগুলির জন্য সংস্থানগুলি সম্পাদনা করেন তখন এই পরিবর্তনগুলি:

<resources>
  <include location="resources.qrc"/>
</resources>

এটিই সমস্যার উত্স। আপনি যদি .Qrc ফাইল পরিবর্তন করেন তবে এতে অন্তর্ভুক্ত থাকা ট্যাগটিতে resourcesXXX.qrcত্রুটি পরিবর্তিত হবে No module named resourcesXXX_rc

দ্রষ্টব্য: নিম্নলিখিতটি কিউজিআইএস প্লাগইন বিল্ডারের সমস্ত ক্ষেত্রে প্রবেশ করা 'পরীক্ষা' দিয়ে প্লাগইন বিল্ডের উপর ভিত্তি করে।

ইন test_dialog.py ফাইল নিম্নলিখিত পংক্তিগুলি কম্পাইল .ui ফাইল:

FORM_CLASS, _ = uic.loadUiType(os.path.join(
    os.path.dirname(__file__), 'test_dialog_base.ui'))

এখানেই ত্রুটি ঘটছে।

আপনার .uiফাইলটি এতে ফিরে যেতে সম্পাদনা করুন <resources/>এবং সমস্যাটি সমাধান করা হয়েছে। যতক্ষণ না আপনি আবার আপনার QtDesigner এ ডায়লগ সম্পাদনা করবেন। .uiপ্রতিবার আপনার ডায়লগটি সম্পাদনা করার পরে আপনাকে অবশ্যই ফাইলটিতে এই সম্পাদনাটি করতে হবে ।

এর সমাধান হ'ল আপনার প্লাগইনটি পরিবর্তন করা প্লাগিনের পূর্ববর্তী সংস্করণগুলির মতো কাজ করা। এই প্রতিস্থাপন জড়িত ইউআইসি কল এবং বর্গ লাইন _dialog.py ফাইল। এই লাইনগুলি প্রতিস্থাপন করুন:

FORM_CLASS, _ = uic.loadUiType(os.path.join(
    os.path.dirname(__file__), 'test_dialog_base.ui'))

class testDialog(QtGui.QDialog, FORM_CLASS):

সঙ্গে:

from test_dialog_base import Ui_testDialogBase

class testDialog(QDockWidget, Ui_testDialogBase):

আপনাকে এখন দৌড়াতে হবে

pyuic4 -x test_dialog_base.ui > test_dialog_base.py

আপনি যখন প্রথম নিজের প্লাগইন তৈরি করেন এবং প্রতিবার আপনি QtDesigner দিয়ে প্লাগইন ডায়ালগ সম্পাদনা করেন। এটি ছিল পুরানো প্লাগইন পদ্ধতি।

.uiফাইলটি সম্পাদনা করা হোক বা pyuic4প্রতিবার রান করা আপনার পছন্দ।


মেরিবেথ, `সংস্থানসমূহের উপাদানটি অবশ্যই একটি খালি উপাদান হওয়া উচিত, সেই উপাদানটির একটি ক্লোজিং ট্যাগ নয়।
মারিওটোমো

9

আপনি .ui ফাইল বা সংকলন, ইত্যাদি সম্পাদনা করে নিম্নলিখিত বিষয়গুলি এড়াতে পারবেন:

import sys
sys.path.append(os.path.dirname(__file__))
FORM_CLASS, _ = uic.loadUiType(os.path.join(
    os.path.dirname(__file__), 'test_dialog_base.ui'), resource_suffix='')

'_rc' এ ডিফল্ট রিসোর্স_সফিক্স, এ কারণেই এটি সর্বদা 'রিসোর্স_সিআর' অনুসন্ধান করে। (আপনি যদি সত্যিই রিসোর্স_সিআর ব্যবহার করতে চান তবে আপনি সর্বদা এটি ডিফল্ট অবস্থায় রেখে দিতে পারেন)

এবং sys.path এ .ui ফাইলের পাথ যুক্ত করার ফলে অজগরটি রিসোর্স.পি খুঁজে পেতে দেয় find আপনার বর্তমান ডিরেক্টরিটি sys.path (এবং আপনার বর্তমান ডিরেক্টরি কাজ থেকে অন্যান্য আমদানি) থাকার কথা বলে এটি মনে করতে সক্ষম হবেন, তবে তা হয় না। ঠিক কী কারণে তা বের করার জন্য আমি এটিকে পর্যাপ্তভাবে দেখিনি।


8

3 ঘন্টা চেষ্টা করার পরে অবশেষে আমি এটি স্থির করেছি। কেউ বলেছে কিউটি ডিজাইনার যুক্ত করে

<resources> <include location="resources.qrc"/> </resources>

আপনার ইউআই ফাইলে আমি সেই সারিগুলি কেবল মুছে ফেলেছি এবং সবকিছু ঠিকঠাক কাজ করে (সংস্থানগুলি জিইউআইতে দৃশ্যমান)


এটি এখনও কিউজিআইএস ২.১৪ এর একটি সমস্যা, সুতরাং এটি এবং ওয়ার্থ লুটজ উত্তরটি অনেক সাহায্য করেছিল!
আন্দ্রেয়াস মুলার

2

আমি মনে করি এই সমস্যার সংক্ষিপ্ত উত্তর হ'ল লোকেরা প্রজেক্টটি চালানোর পরিবর্তে সরাসরি কিউজিআইএসে লোড করছে:

make deploy

ফাইলটি resources.pyপ্রথমবার make deployচালানোর পরে তৈরি করা হয় ।


2

এইভাবে আমি সমস্যার সমাধান করেছি:

  • Run-> cmd কমান্ড

  • আপনার প্লাগইন নির্মাতার অবস্থানটিতে যান (যেমন: সি: / ইউজারস / এফারিক_পিসি /.কিগিস 2/python/plugins/pluginbuilder)

  • নিম্নলিখিত কমান্ডটি টাইপ করুন:

    pyrcc4 -py2 resources.qrc -o resources.py

(আমি -py2 ব্যবহার করেছি কারণ আমি পাইথন ২.7 ব্যবহার করছি)

  • আপনার কিউজিআইএস পুনরায় চালু করুন।

  • সম্পন্ন.


0

আমার জন্য শেষ পর্যন্ত কী কাজ করেছিল তা হল আসল সংস্থানগুলি ব্যবহার করা যা আমি যখন প্লাগইন নির্মাতাদের সাথে প্যাকেজ তৈরি করেছিলাম এবং এটি আমার প্লাগইনের অন্যান্য সমস্ত সংলাপে ব্যবহার করি। প্লাগিনটি পুনরায় লোড করার সময় কেন আমার প্লাগইনটির প্রধান আইকন পরিবর্তিত হয় তা আমি এখনও জানি না, তবে এখনও আমি অন্যান্য সংলাপগুলিতে গ্রাফিক্স পাই।

আমি আশা করি এটি অনেক কারণে ভিন্ন হতে পারে। সাধারণ প্লাগইন তৈরির জন্য এই পদ্ধতির সম্ভবত কাজ করে। এটি একটি সংস্থা জিনিস।

যেহেতু এই সংস্থানগুলিতে আমার অনেকগুলি সমস্যা ছিল কারণ আমি রিসোর্সিং.পি এবং রিসোর্স_সি.পি.পি তৈরি করেছি কারণ সম্ভবত পুনরায় লোড করার সময় আমার সমস্যা হয়।

এই সমস্যাটি মোকাবেলার জন্য আমার কাছে সময় নেই তবে কিউজিআইএস দেব দলের উচিত এতে মনোযোগ দেওয়া উচিত কারণ এটি লোকেরা সুন্দর প্লাগিনগুলি তৈরি করতে বাধা দেয়: ডি

আমি যা করে শেষ করেছি তা হ'ল সহজ:

import resources

ইউআই ক্লাস কল করার আগে।

এই জগাখিচুড়ি সম্পর্কে আমাকে সাহায্য করার জন্য ধন্যবাদ।

পিএস: আপনাকে আপনার * .ui ফাইলে যুক্ত করার আগে আপনার সংস্থানগুলি "সংকলন" করতে হবে এবং আপনার সমস্ত প্লাগইন কথোপকথনে একই সংস্থান -> আমদানি সংস্থান ব্যবহার করতে হবে। আমি আশা করি এটা কারো সাহায্যে লাগবে.


0

একই কমান্ড ব্যবহার করে কার্যকর করুন

sudo pyrcc4 -o উত্স_rc.py উত্স.কি.আরসি

এটা কাজ করবে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.