কীভাবে বিশ্বব্যাপী ডিফল্ট পাইথনপথ (sys.path) সংশোধন করবেন?


33

একটি উবুন্টু (10.10) সিস্টেমে আমার কাছে পাইথন প্যাকেজ রয়েছে যা নিজেই ইনস্টল করে /usr/local/lib/python2.6/site-packages/। এটি ডিফল্ট পাথ (sys.path) এর মধ্যে নেই। এই ডিরেক্টরিটি আমি কীভাবে যুক্ত করব?

$PYTHONPATHপরিবেশের পরিবর্তনশীল নির্ধারণ করা অবশ্যই একটি সমাধান, তবে আমি এটি করার জন্য আরও মার্জিত উপায়ের সন্ধান করছি। উদাহরণস্বরূপ, easy_installএতে ইনস্টল করা প্যাকেজগুলি রাখে, আমার সিস.পথটি দেখতে এমন কিছু দেখাচ্ছে:

['', '/usr/local/lib/python2.6/dist-packages/keyring-0.5.1-py2.6.egg', 
'/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk',  
'/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', 
'/usr/local/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages', 
'/usr/lib/python2.6/dist-packages/PIL', '/usr/lib/pymodules/python2.6', 
'/usr/lib/pymodules/python2.6/gtk-2.0']

সুতরাং পাথটি অবশ্যই পাইথন বাইনারিতে অন্তর্নির্মিত ডিফল্ট নয়।

উপরে কি একক কনফিগারেশন ফাইল রয়েছে যা এন্ট্রিগুলিতে থাকে? বা কোন উপায়ে এটি সংশোধন করা সম্ভব?

উত্তর:


27

সাইট মডিউল ডকুমেন্টেশন এবং পরিবর্তন পাইথন এর অনুসন্ধান পাথ আপনি যা খুঁজছেন তা হবে বলে মনে হচ্ছে।

আমি যতদূর বুঝতে পেরেছি, সেগুলি sys.pathদ্বারা যুক্ত করা হচ্ছে :

  • /usr/lib/python2.6/site.py
  • /usr/lib/python2.6/dist-packages/site.py
    (পাইথনের আপনার সংস্করণে ২.6 পরিবর্তন করুন))

এটি পরিবর্তন করার সবচেয়ে সহজ উপায় একটি ফাইল যোগ হয় /usr/local/lib/python2.6/dist-packages/site-packages.pthধারণকারী ../site-packages

বিকল্পভাবে, আপনি কি প্যাকেজটি ব্যবহার করতে শেখাতে পারেন site.getsitepackages()?


1
ধন্যবাদ, পুরোপুরি কাজ করে :) (আমি /usr/local/python2.6/dist-packages এ একটি .pth ফাইল যুক্ত করে শেষ করেছি, "../site-packages" রয়েছে)
লাতানিয়াস

1
আপনি এমন একটি মডিউলও তৈরি করতে পারেন sitecustomize.pyযা বলে সেখানে site.pyআমদানি ও সংশোধন করার চেষ্টা করে sys.path
TestUser16418

5

আপনি /etc/profile.d/local_python.shলিখিত সামগ্রী সহ একটি নতুন ফাইল তৈরি করতে পারেন

PYTHONPATH="/usr/local/lib/python2.6/site-packages/":"${PYTHONPATH}"
export PYTHONPATH

যা PYTHONPATHআপনার সিস্টেমে লগ-ইন থাকা সমস্ত ব্যবহারকারীদের জন্য ভেরিয়েবল সেট করবে ।


7
এটি আসলে সর্বজনীন নয়। /Etc/profile.d প্রক্রিয়াটি কেবলমাত্র /etc/profile.d (বাশ / ksh / zsh) ব্যবহার করে এমন শাঁসযুক্ত লোকের জন্য লগইন শেলগুলির জন্য কাজ করবে। আমি নিশ্চিত csh ব্যবহারকারীরা এই পরিবর্তনটি দেখতে পাবেন না। এছাড়াও, ক্রোন / চাকরিতে এড়ানো হবে।
ধনী হোমোলকা

2
এটি বিশ্বব্যাপী পরিবেশের ভেরিয়েবলগুলি সেট করার একটি দুর্দান্ত উপায় (আজ আমি আরও একটি জিনিস শিখেছি), তবে আমি যেমন পোস্টে উল্লেখ করেছি, আমি আরও পাইথোনিক উপায় খুঁজছিলাম :)
লাতানিয়াস

4

আমি পাইথনের পথ পরিবর্তন সম্পর্কে আমার অনুসন্ধানগুলি সংক্ষেপে বলতে চাই। এটি করার দুটি উপায় আছে।

  • .pth ফাইল
  • PYTHONPATH

যে কোনও .pth ফাইল যা ডিফল্ট পথে পাওয়া যায় ( নমুনা দেখুন) এর বিষয়বস্তুতে অন্তর্ভুক্ত হবে sys.path.Pth ফাইলের ফর্ম্যাটটি সহজ: প্রতি লাইনে এক (ফোল্ডার) পাথ। আশ্চর্যজনকভাবে, পাথগুলি .pth ফাইলের সাথে নিখুঁত বা আপেক্ষিক হতে পারে ।

ডিফল্ট পাথ হ'ল যেখানে ইন্টারপ্রেটার থাকে এবং <some-prefix>/lib/python<version>/site-packagesযেখানে <some-prefix>সাধারণত থাকে /usr/

PYTHONPATHআপনার অপারেটিং সিস্টেমের পরিবেশগত পরিবর্তনশীল। ইউনিক্স সিস্টেমে আপনি এগুলি তালিকাভুক্ত করেন env। যেমন ভেরিয়েবল গ্লোবাল পরিমার্জন মাধ্যমে সম্পন্ন করা হয় .sh ভিতরে স্ক্রিপ্ট /etc/profile.d/যেমন @ TestUser16418 উল্লেখ ফোল্ডার।


2
এটি "_" ছাড়াই
পাইথনপথ

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