পাইপ ওভাররাইট প্যাকেজগুলি এপটি-গেইনের মাধ্যমে ইনস্টল করা আছে?


9

আমি ঘটনাক্রমে pip installএমন প্যাকেজটি ব্যবহার apt-getকরেছি যা আমি আগে থেকেই ইনস্টল করে রেখেছি ? আমি কি কেবল সর্বশেষতম সংস্করণটি ব্যবহার করতে পারি (উদাহরণস্বরূপ সম্ভবত আমি এটি ব্যবহার করে ইনস্টল করেছি pip)? অন্যভাবে কী হয়?

দ্রষ্টব্য: আমি ভার্চুয়াল পরিবেশে পাইথন ব্যবহার করি না (কেবল কারণ আমি জানি না কেন আমার উচিত - আমি পাইথনকে ডেটা বিশ্লেষণ সরঞ্জাম হিসাবে ব্যবহার করি এবং বেশিরভাগ ক্ষেত্রে সর্বশেষতম সংস্করণটি ব্যবহার করার চেষ্টা করি)।


যদি আমি ভুল না হয় তবে আপনি একই প্যাকেজগুলি ব্যবহার করে ইনস্টল করবেন না apt-getএবংpip
লুসিও

Corerct, এগুলি ডিফল্টরূপে বা অন্য কোনও ডিরেক্টরিতে আপনি চাইলে সাব pip- /usr/localডিরেক্টরিতে ইনস্টল করে ।
টিমো

3
তবে কী ঘটে, উদাহরণস্বরূপ, যদি আমি প্রথমে apt-get install python-pandasঅনুসরণ করি pip install pandas, বা অন্যভাবে? আমার বৈশ্বিক পাইথন ইনস্টলেশনটি কীভাবে উভয় সংস্করণ ব্যবহার করবে তা জানবে?
ফ্রেড এস

1
@ ফ্রেডস: টার্মিনালে নিম্নলিখিত কমান্ডটি চালনা করুন, পাইথন একটি মডিউলটির জন্য সুনির্দিষ্ট ক্রমে অনুসন্ধান করবে:python -c "import sys; print sys.path"
টিমো

উত্তর:


3

@ টিমো তার মন্তব্যে যেমন উল্লেখ করেছেন, python -c "import sys; print sys.path"আপনাকে পাইথন ইনস্টল করার জন্য পাইথন মডিউল লোড পাথ দেবে। ১.0.০৪-এর তুলনামূলকভাবে তাজা ইনস্টলে, নোটের তিনটি ডিরেক্টরি রয়েছে (আমার মধ্যে থাকা মোট 10 টির মধ্যে):

  • '' (অ্যাপ্লিকেশন ডিরেক্টরি)
  • '/usr/local/lib/python2.7/dist-packages' (যেখানে পাইপ মডিউল ইনস্টল করে)
  • '/usr/lib/python2.7/dist-packages' (যেখানে অ্যাপ্লিকেশন ইনস্টল মডিউল)

তবে সবচেয়ে গুরুত্বপূর্ণ লক্ষণীয় যে '/usr/local/lib/python2.7/dist-packages' '/usr/lib/python2.7/dist-packages' এর চেয়ে উচ্চতর।

আপনি যদি প্রথমে অ্যাপটি (-get) এর মাধ্যমে পাইথন প্যাকেজ ইনস্টল করেন তবে এটি '/usr/lib/python2.7/dist-packages' এ ইনস্টল হবে। আপনি যদি পরে মডিউলটি ইনস্টল করার জন্য পিপ চেষ্টা করেন এবং ব্যবহার করেন, পাইপ প্রাথমিকভাবে একটি সতর্কতা দেয় যে নির্ভরতা ইতিমধ্যে পূরণ হয়েছে, তারপরে প্রস্থান করুন; - আপগ্রেড পতাকা যুক্ত করে পিপটি ইনস্টল করতে বাধ্য করবে, মডিউলটি '/usr/local/lib/python2.7/dist-packages' এ ইনস্টল করবে। (লক্ষ্য করুন আউটপুট এও বলে যে, যে সংস্করণ '/usr/lib/python2.7/dist-packages' আনইনস্টল করা হয়) এর পরে যাচাই করতে পারেন যে পিপ-ইনস্টল করা সংস্করণের নিম্নলিখিত ব্যবহারের মাধ্যমে ব্যবহৃত হচ্ছে: python -c "import MODULE; print MODULE.__file__"

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


1

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

  • '/usr/local/lib/python2.7/dist-packages' (যেখানে পাইপ মডিউল ইনস্টল করে)
  • '/usr/lib/python2.7/dist-packages' (যেখানে অ্যাপ্লিকেশন ইনস্টল মডিউল)

তবুও আমি অবশ্যই কিছু অজানা পদক্ষেপ নেওয়ার কারণে এই পথগুলি আমার পক্ষে বিপরীত ক্রমে হাজির হয়েছিল (অন্যান্য প্রবেশদ্বার উপেক্ষা করে):

  • '/usr/lib/python2.7/dist-packages' (যেখানে অ্যাপ্লিকেশন ইনস্টল মডিউল)
  • '/usr/local/lib/python2.7/dist-packages' (যেখানে পাইপ মডিউল ইনস্টল করে)

এটা কিছু আমি যোগ হয়নি সক্রিয় আউট /usr/lib/python2.7/dist-packagesকরার /usr/local/lib/python2.7/dist-packages/easy-install.pth। কেবল easy-install.pthআমার জন্য বিভ্রান্তির বিষয়টি স্থির করে দেওয়া হয়েছে line /usr/lib/python2.7/dist-packagesএটি এখনও আমার পথে, যেহেতু এটি পরের পর্যায়ে অন্য কোথাও যুক্ত হয়।

পার্শ্ব নোট হিসাবে, পিপ্রিন্টটি আপনার পাথকে সুন্দর প্রদর্শন করবে ... যেমন:

$ python -c "import sys; import pprint; pprint.pprint(sys.path)"
['',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-x86_64-linux-gnu',
 '/usr/lib/python2.7/lib-tk',
 '/usr/lib/python2.7/lib-old',
 '/usr/lib/python2.7/lib-dynload',
 '/usr/local/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages/PILcompat',
 '/usr/lib/python2.7/dist-packages/gtk-2.0',
 '/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.