একই সেশনে আমি কীভাবে ভিমকে লিনাক্স সিস্টেমে পাইথন এবং পাইথন 3 চালাতে সক্ষম করব?


28

লিনাক্স সিস্টেমে, প্যাকেজযুক্ত ভিমে সাধারণত দুটি হয় pythonবা python3সক্ষম থাকে। উভয়ের পক্ষে সক্ষম হওয়া (ব্যবহার python/dynও করা python3/dyn) সম্ভব তবে একটি সেশনের সময় কেবলমাত্র একটিই ব্যবহার করা যায়। এই মেইলিং তালিকা আলোচনা বলেছে :

পাইথন গ্রন্থাগারগুলি কীভাবে নির্মিত হয় তার উপর নির্ভর করে। ডেবিয়ান-ভিত্তিক সিস্টেমে (যে কারণে আমি অফহ্যান্ডকে স্মরণ করি না), তারা এমনটি তৈরি করেছে যে প্রতীকগুলিতে অ্যাক্সেস পেতে আরটিএলডি_গ্লোবালকে ব্যবহার করতে হবে। এটি একই প্রক্রিয়াতে libpython2.x এবং libpython3.x উভয়ই লোড করা রোধ করে।

একই সেশনে উভয়ের লোডিং সক্ষম করতে কী করা যেতে পারে?

যে বিকল্পগুলি আমি দেখতে পাচ্ছি:

  • পাইথন {2,3} প্যাকেজগুলি পুনর্নির্মাণ করুন যাতে RTLD_GLOBAL(যা কিছু যাই হোক না কেন) প্রয়োজন না হয়।
  • কোনওভাবে ভিমের দ্বারা লোড করা (?!) লোড করার আগে লাইব্রেরিটি লোড করুন। (এটা কি সম্ভব?)

ডিসট্রোর যে কোনও বিবরণের জন্য, ধরে নিন, সুনির্দিষ্টতার ক্রম বাড়ানোর জন্য:

  • ডেবিয়ান ভিত্তিক
  • উবুন্টু
  • উবুন্টু 14.04
  • অথবা, আর্চ লিনাক্স, যদি কোনও ডেবিয়ান-ভিত্তিক সিস্টেম খুব জটিল হয়।

নোট করুন যে আমি উভয়ের জন্য ডায়নামিক লোডিং সমর্থন দিয়ে তৈরি করতে ভিম পেয়েছি , তাই ভিম তৈরি করা কোনও সমস্যা নয়।

উত্তর:


17

আমি দেবিয়ার বর্তমান ভিম রক্ষণকারী এবং রেফারেন্সযুক্ত মেইলিং তালিকার আলোচনায় উদ্ধৃত ব্যক্তি

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

এই পর্যন্ত ফুটন্ত

  • ডেবিয়ানের পাইথন প্যাকেজিং পাইথন এক্সটেনশনগুলিকে প্রাসঙ্গিক লিবিপথন শেয়ার্ড লাইব্রেরির সাথে লিঙ্ক করে না। ডাইবিয়ান ভিম প্যাকেজিংয়ের ফলে পাইথন ভাষার বাইন্ডিংগুলি গতিশীলভাবে লোড করার RTLD_GLOBALসময় এটির প্রয়োজন হয় dlopen()

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

    ভিমে ভাষা সমর্থনটি গতিশীলভাবে লোড করার মূল বিষয় হ'ল ব্যবহারকারীরা যে লাইব্রেরি ব্যবহার করবেন না সেগুলি ইনস্টল করার প্রয়োজন নেই। এর অর্থ ভিম প্যাকেজিং কোনও গ্রন্থাগারের ন্যূনতম সংস্করণে একটি হার্ড নির্ভরতা নির্দিষ্ট করতে পারে না।

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

আমি পুনরায় সক্ষম করতে সক্ষম হতে চাই (এটি সামান্য সময়ের জন্য 2010-101 সালে উপলব্ধ ছিল) ভাষা সমর্থন গতিশীল লোডিং, তবে উপরের সমস্যাগুলি প্রথমে সমাধান করতে হবে to


সংস্করণ 2: 7.4.2330-1 হিসাবে , ডিবিয়ান প্যাকেজিং পাইথন বাইন্ডিংয়ের জন্য পাইথন 2 এর পরিবর্তে পাইথন 3 ব্যবহার শুরু করেছে।


বিকল্প হিসাবে, নিউওম প্যাকেজটি পাইথন 2 এবং পাইথন 3 উভয়ই একই এনভিআইএম প্রক্রিয়া থেকে সমর্থন করে, যেহেতু পাইথন সমর্থন বহিরাগত মডিউল দ্বারা সরবরাহ করা হয় ( পাইথন-নিওভিম এবং পাইথন 3-নেওভিম প্যাকেজ)। পাইথন কোডটি বহির্মুখী করা, ভিমের মতো এম্বেড করার পরিবর্তে, কীভাবে লিপিথন তৈরি হয় তা মোকাবেলা করার বিষয়টি এড়িয়ে চলে।


"এর অর্থ ভিম প্যাকেজিং কোনও লাইব্রেরির ন্যূনতম সংস্করণে হার্ড নির্ভরতা নির্দিষ্ট করতে পারে না।" আমি ধরে নিয়েছি যে কেন আর্ক লিনাক্সের মতো ভিম + পাইথন 2 এবং ভিম + পাইথন 3 এর জন্য ডেবিয়ানের পৃথক প্যাকেজ নেই?
মুরু

@ মুরু পাইথন কেবলমাত্র ভাষা বাইন্ডিং উপলভ্য। বিভিন্ন ভাষা এবং জিইউআই টুলকিটগুলির জন্য প্যাকেজগুলির সংমিশ্রণগুলি প্যাকেজগুলির একটি বিশাল সংখ্যা। সিদ্ধান্তটি ছিল যুক্তিসঙ্গত যতগুলি ভাষা বাইন্ডিং সক্ষম করা এবং পছন্দটি জিইউআই টুলকিটগুলির মধ্যে হওয়া উচিত (বা না)। কোনও ব্যবহারকারীকে তাদের লেখা ভাষার উপর ভিত্তি করে ভিম প্লাগইনগুলি বেছে নেওয়া উচিত নয়
জামেসান

এটি আসল যুক্তি নয়, যেহেতু কেবল পাইথন এবং পাইথন 3 একে অপরের মধ্যে বিরোধ করে। আমি সত্যই মনে করি আর্চ বিকাশকারীদের বই থেকে আপনার একটি পাতা নেওয়া উচিত। একটি সাধারণ ছাড়াও vim-runtimeপ্যাকেজ, তারা আছে vim, gvim, vim-python3এবং gvim-python3-python3এবং সাধারণ প্যাকেজগুলির মধ্যে কেবলমাত্র পার্থক্যটি পাইথন সক্ষম করা সংস্করণ। অবশ্যই, এটি সামনের প্যাকেজগুলির সংখ্যা দ্বিগুণ করে, তবে আমি এই জাতীয় প্যাকেজিংয়ে দেখছি সমস্ত ত্রুটি।
মুরু

এটি আর্কের জন্য ডেবিয়ান, সেখানে এর vim-nox, vim-gtk, vim-gnome, এবং vim-athena। এগুলি দ্বিগুণ করা যাতে ব্যবহারকারীরা পাইথন এবং পাইথন 3 প্লাগইন উভয়ই ব্যবহার করতে না পারে তা উপযুক্ত বলে মনে হচ্ছে না।
jamessan

আপনি কেন সাধারণ প্যাকেজগুলির জন্য গতিশীল বিকল্পটি বেছে নি নি তা সম্পর্কে আমি মৃদু আগ্রহী।
মুরু

4

উবুন্টু ১.0.০৪-এ এখন রেপোতে vim-*-py2অন্তর্ভুক্ত প্যাকেজ রয়েছে। এর অর্থ সমস্ত ডিবিয়ান ভিম ব্যবহারকারী প্রয়োজনে উবুন্টুতে মাইগ্রেট করতে পারবেন।

পূর্বের vim-*প্যাকেজগুলি এখন সরবরাহ করে +python3এবং দ্বন্দ্বগুলি এড়ানোর জন্য বাইনারিগুলির আলাদা আলাদা নাম দেওয়া হয়েছে:

  • vim.noxজন্য vim-noxএবং+python3
  • vim.nox-py2জন্য vim-nox-py2এবং+python

ইত্যাদি।


সুতরাং, 16.04-এ, আমি একই ভিম সেশনে পাইথন 2 এবং পাইথন 3 লোড করতে পারি?
মুড়ু

@ মুরু না, আপনি কোনও প্রদত্ত অধিবেশনে আরও সহজেই যা পান তা বেছে নিতে পারেন;)
হবস

@ হোবস আমি নিশ্চিত যে প্যাকেজগুলি পাইথন 3 এর সাথে বিরোধ করে।
মুড়ু

@ মুরু আসলে তারা তা করে না। আপনি যে কোনও একটি ইনস্টল এবং চালাতে পারেন, পাশাপাশি আপনার ডিফল্ট ভিমে হিসাবে বেছে নিতে পারেন। এটি দুর্দান্ত নয়, তবে এটি একটি উন্নতি।
hobbs

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