পাইপ ইনস্টল বনাম পাইথন-এক্সএক্সএক্স ইনস্টল করুন


8

আমি এখনও এই সমস্যাটি বোঝার চেষ্টা করছি এবং sudo apt-get install python-XXXবনাম সম্পর্কিত pip installঅনেকগুলি পোস্ট পড়েছি এবং আমি এর সংক্ষেপণটি বুঝতে পারি (অ্যাপট-গেট একটি প্যাকেজ রেপো, পিপ, অটোতে সম্পূর্ণ ভিন্ন গোষ্ঠী দ্বারা পরিচালিত -যখন কোনও আপডেট উপলব্ধ থাকে তখন সমস্ত কিছুর সাথে আপডেট হয়, এটি বাইনারি ইত্যাদি)। তবে কয়েকটি নির্দিষ্ট জিনিস রয়েছে যা আমি বুঝতে পারি না এবং এর উত্তরগুলি খুঁজে পেতে সক্ষম হইনি:

  1. যদি আমি যাই হোক না কেন, প্রথমে একটি প্যাকেজ ইনস্টল করি, উদাহরণস্বরূপ নম্পি sudo apt-get install numpy, এবং পরে আমি পরে pip install numpy। কি ঘটেছে? নম্পি আবার অন্য সংস্করণ (যেমন। লোকাল / লিব ইন) দিয়ে অন্য কোথাও ইনস্টল করা আছে, তাই এখন আমার দুটি স্বাধীন সংস্করণ আছে? আমি আমদানি করার সময় কোনটি ব্যবহৃত হয়? (যদি আমি সঠিকভাবে বুঝতে পারি তবে এটি পৃথক এবং যথাযথ সিস্টেম বিস্তৃত, তবে আমি এই প্রশ্নের বিরোধী জবাব দেখেছি, যেমন এখানে )

  2. আমি লক্ষ্য করেছি যে অ্যাপের জন্য প্যাকেজের অনেকগুলি পাইপের তুলনায় বেশ পুরানো। উদাহরণস্বরূপ আইপিথন ২.৩.০ বনাম ৪.০.৩ লেখার সময়, নপি 1.10.2 বনাম 1.10.4, স্পাইডার 2.3.5 বনাম 2.3.8। প্রথমে sudo apt-get installক এর পরে কোন সুবিধা আছে pip install? নাকি এটা কি নির্বোধ?

  3. আমি লক্ষ্য করেছি যে আমার পাইপটি 1.5.5 ছিল - এটি যদি আপনি করেন তবে তা সর্বশেষ sudo apt-get install python-pip। যদিও পাইপ এটি 8.0.2! আমি বিশ্বাস করি এটি আমার সমস্যার কারণ হয়ে দাঁড়িয়েছে, কারণ সেই পুরানো সংস্করণে আপনি একই প্যাকেজটি বারবার ইনস্টল করতে পারেন এবং এটি সতর্ক করে না। এবং একরকম এটি পুরানোটির উপরে লেখা নেই। আমি এটি উপলব্ধি করেছি কারণ আমি একই প্যাকেজটি (যেমন উদাসীন) আনইনস্টল করতে পারি এবং আমি যখন করি তখন এটি সর্বদা উপস্থিত থাকে pip show numpy। এবং অদ্ভুতভাবে, সর্বদা একই ফোল্ডারটি দেখায় (। লোকাল /), তবে বিভিন্ন সংস্করণ সহ: এস তাই আমার এর সাথে দুটি প্রশ্ন রয়েছে:

    ক। পাইপ ইনস্টল করার সর্বোত্তম উপায় কী? আমি বর্তমানে প্রতি পক্ষপাতী করছি sudo apt-get install python-pip, pip install pip, sudo apt-get purge python-pip। এটা কি বুদ্ধিমান? এটা আমার কাছে কিছুটা হাস্যকর মনে হচ্ছে seems

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

পিএস আমি নিশ্চিত ছিলাম না যে এটি আমার একটি নতুন প্রশ্ন হিসাবে বা আমার মূল সমস্যার প্রতিক্রিয়া হিসাবে পোস্ট করা উচিত। যেহেতু এই প্রশ্নটি অনেক বেশি সংক্ষিপ্ত এবং সাধারণ আমি অনুভব করেছি এটি আরও ভাল হবে। যদি আমার ভুল হয় তবে দুঃখিত।


অ্যাপের সম্ভাব্য সদৃশ
হ'ল

আমি আসলে আমার প্রশ্নের সেই পোস্টটিকেই উল্লেখ করেছি, এটি আমার প্রচুর বিভ্রান্তি দূর করতে খুব সহায়ক হয়েছিল, তবে এটি আমার প্রশ্নের উত্তর দেয় না (কমপক্ষে আমি এটি দেখতে পারি না)
মেমো

ওহ, আপনার অন্য প্রশ্নে। আমি কেবল লিঙ্কযুক্ত পোস্টগুলির তালিকার দিকে চেয়েছিলাম এবং এটি সেখানে দেখিনি।
মুড়ু

উত্তর:


8

সংরক্ষণাগারগুলির জন্য, অনেকগুলি পরীক্ষার পরে এবং ত্রুটির পরে এটি আমি খুঁজে পেয়েছি (পূর্ববর্তী ক্ষেত্রে, কিছু বিটগুলি অর্থপূর্ণ করে তোলে, অন্যরা যথেষ্ট বিভ্রান্তিকর হয়)।

  • আপনি যদি sudo apt-get install python-xyz, প্যাকেজ উপস্থিত হবেpip list । অবশ্যই আপনি পাইথন এটিকে আমদানি করতে পারেন, তবে এটি পাইপ.ইট_ইনস্টল_ডিজিবিশনগুলি () তে উপস্থিত হয় না । (স্পষ্টত বিপরীতটি সত্য নয় ie অর্থাত্ যদি pip install xyzএটি করেন তবে এটি আপনার অ্যাপটি / সিনাপটিকের মধ্যে উপস্থিত হবে না)

  • পরে sudo apt-get install python-xyzযদি আপনি না pip install xyzসেখানে কি ঘটছে আপনার আছে পিপ সংস্করণ উপর নির্ভর করে।

ওল্ড ভি ১.৫..6 (উবুন্টু পিপিএ-তে বর্তমান সংস্করণ শিপিং):

  • পাইপের এই সংস্করণটি (1.5.5) কেবলমাত্র একটি অন্য জায়গায় xyz এর একটি নতুন অনুলিপি ইনস্টল করবে। আপনি একাধিক অনুলিপিগুলি শেষ করেছেন এবং এটি একটি বিশাল গণ্ডগোলের কারণ। উদাহরণ:

    • এপটি-গেট থেকে অল্প
    • পিপ থেকে নিমপি / .local / lib / পাইথন 2.7 / সাইট-প্যাকেজগুলিতে 1.10.4 হয়
  • যদি আমি pip install numpyআবারও করি, এটি আবার ডাউনলোড করে ইনস্টল করে। সুতরাং আপনি সত্যিই অ্যাক্সেস করতে পারবেন না এমন অনেকগুলি বিভিন্ন সংস্করণ সমাপ্ত হতে পারে। আমি pip install numpy5x বার করতে পারি , এবং তারপরে আমি pip uninstall numpy 5xবারও করতে পারি ! স্পষ্টতই আপনি এটি না করার দিকে মনোযোগ দিতে পারেন, তবে কখনও কখনও অন্য সফ্টওয়্যারের ইনস্টল স্ক্রিপ্টগুলি কিছুটা অযত্ন থাকে এবং জিনিসগুলিকে গোলমাল করতে পারে। অবিশ্বাস্য যে উবুন্টু আনুষ্ঠানিকভাবে এই সংস্করণের পাইপটি পাঠায়।

NEW v8.0.2 (পাইপ নিজেই বর্তমান সংস্করণ):

  • পাইপের নতুন সংস্করণ (যেমন 8.0.2 যা পাইপে রয়েছে) একই প্যাকেজটি ইনস্টল করতে অস্বীকার করবে যা ইতিমধ্যে প্রয়োজনীয়তা পূরণ করেছে। সুতরাং আপনি একটি নতুন সংস্করণ ইনস্টল করতে পারবেন না। এটি ভাল আচরণ (পরে পিপের এই সংস্করণটি পাওয়ার ক্ষেত্রে আরও বেশি)।

  • এই ক্ষেত্রে আপনি কেবলমাত্র আপগ্রেড করতে পারবেন, অর্থাত্ -উ পতাকা সহ ইনস্টল করুন।

  • তবে আপনি যখন pip install -U xyzsudo apt-get এর সাথে ইনস্টল হওয়া কোনও প্যাকেজটি ব্যবহার করার চেষ্টা করবেন তখন আপনি অনুমতি ত্রুটি পাবেন কারণ এপ-গেটটি / usr / এ ইনস্টল করা হয়েছিল এবং সেখানে লেখার জন্য আপনার রুট অ্যাক্সেসের প্রয়োজন।

  • সুতরাং আফাইক আপনার কাছে sudo pip install -U xyzএটি আপডেট করতে সক্ষম হওয়া ছাড়া আর কোনও উপায় নেই । এই ক্ষেত্রে পাইপ সর্বশেষ প্যাকেজটি একই জায়গায় ইনস্টল করে যেমনটি sudo apt-get লিখেছিল। যেমন আমার ক্ষেত্রে /usr/local/lib/python2.7/dist-pages। এটা ভাল.

  • এটি আরও উল্লেখ করার মতো যে অ্যাপে থাকা প্যাকেজগুলি প্রায়শই পাইপযুক্ত প্যাকেজের তুলনায় বেশ পুরানো হয় (যেমন নপি v1.8.2 বনাম 1.10.4, স্কিপি 0.14.1 বনাম 0.17.0, আইপথন 2.3 বনাম 4.0.3, স্পাইডার 2.3.5 বনাম) 2.3.8)

সুতরাং আমার বর্তমান চিন্তাভাবনাগুলি হ'ল বড় জিনিসগুলি পাওয়া sudo apt-getযেমন, sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy pythoএন-নাক স্পাইডার

এবং তারপরে সেগুলি আপডেট করুন (বা তাদের মধ্যে কমপক্ষে কিছু) sudo pip install -U

এনবি পাইপ থেকে নতুন পাইপ পাওয়া বেশ গুরুত্বপূর্ণ বলে মনে হচ্ছে (খুব মেটা)

sudo apt-get install python-pip
sudo pip install -U pip

পিএস আমি ভার্চুয়ালেনভ সম্পর্কে সচেতন তবে এখনই আমার এটির কোনও প্রয়োজন নেই। আমার একটাই উন্নয়নের পরিবেশ দরকার।

এবং প্যাকেজগুলির তালিকা, সংস্করণ এবং পাথের তালিকা ফেলে দেওয়ার জন্য এখানে একটি ছোট স্ক্রিপ্ট রয়েছে (তবে কেবল পাইপ ইনস্টল করা মডিউলগুলিতে কাজ করে, অ্যাপটি-গেটগুলি নয়)

import pip
pp = pip.get_installed_distributions()
for p in sorted([p.location+"\t"+p.project_name+" ("+p.version+")" for p in pp]):
    print p
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.