অজগরটি ব্যবহার করে আমি কীভাবে আমার অজগর পথটি সন্ধান করব?


350

PYTHONPATHপাইথন স্ক্রিপ্টের (বা ইন্টারেক্টিভ শেল) এর মধ্যে থেকে আমার সিস্টেমের পরিবর্তনশীলগুলিতে কোন ডিরেক্টরিগুলি তালিকাভুক্ত রয়েছে তা আমি কীভাবে জানতে পারি ?


24
আপনি কী করার চেষ্টা করছেন তা আমি নিশ্চিত নই, তবে আমদানি করা মডিউলগুলি অনুসন্ধান করতে কোন ফোল্ডারগুলি ব্যবহার করা হচ্ছে তা আপনি জানতে চাইলে আপনার উপর নির্ভর করা উচিত নয় PYTHONPATH। তার sys.pathজন্য ব্যবহার করুন ।
ভানুয়ান

সাধারণ পরীক্ষা-নিরীক্ষার মাধ্যমে, আমি নীচে ভানুয়ানের উত্তর পেয়েছি (প্রিন্টিং সিস.পথ) কেবল পাইথনপথ মুদ্রণ করেছে। আমরা add_path (new_path) ব্যবহার করে মান পরিবর্তন করার পরে এটি পাইথনপথে যোগ করে This
চান কিম

6
এই পোস্টের শিরোনাম এবং শরীর দুটি পৃথক প্রশ্ন জিজ্ঞাসা করে। sys.path"স্ট্রিংগুলির একটি তালিকা যা মডিউলগুলির জন্য অনুসন্ধানের পথটি নির্দিষ্ট করে" - ডকস.পিথন.অর্গ / 2 / লাইবারি / সিসি html#sys.path । পাইথনপথ একটি পরিবেশের পরিবর্তনশীল যা এই তালিকাকে প্রভাবিত করে। যেকোন যুক্তিসঙ্গত সংজ্ঞা অনুসারে sys.pathআপনার "অজগর পথ"।
স্পিন্কাস

4
সম্পর্কে ভুলবেন না python -m site
অ্যান্ড্রু ম্যাককিনলে

উত্তর:


236

sys.pathআইটেমগুলি অন্তর্ভুক্ত থাকতে পারে যা বিশেষভাবে আপনার PYTHONPATHপরিবেশের পরিবর্তনশীল নয়। ভেরিয়েবলটি সরাসরি জিজ্ঞাসা করতে, ব্যবহার করুন:

import os
try:
    user_paths = os.environ['PYTHONPATH'].split(os.pathsep)
except KeyError:
    user_paths = []

3
(বা, আরও সাধারণভাবে ... বিভক্ত (os.sep))। আপনি কেন প্রেম পাচ্ছেন না তা বুঝতে পারছেন না, মার্ক। আপনার উত্তরটি পল ডি ওয়েটের তার প্রশ্নের নিজের জবাবের চেয়ে প্রযুক্তিগতভাবে আরও সঠিক ????
এমজেভি


2
আর বিভাজনের সাথে সেই সমস্যাটি সম্ভবত আমি কেন ভালবাসা পাচ্ছিলাম না। আমাকে সঠিক পথে ধরে থাকার জন্য ধন্যবাদ।
মার্ক রান্সম

11
এবং যদি কোনও কীআরআর পায় তবে এর অর্থ কি পাইথনপথটি আমার সিস্টেমে সংজ্ঞায়িত হয়নি? এটা কি একটা সমস্যা? ধন্যবাদ
glarrain

9
@ গ্যালারিন, সঠিক - কীআররারের অর্থ পাইথোনপথ সংজ্ঞায়িত হয়নি। এটি কোনও সমস্যা হবে না কারণ ইতিমধ্যে ডিফল্ট পাথ সেট আপ হয়েছে, দেখুন sys.path
মার্ক রান্সম

599

আপনি সম্ভবত এটিও চাইবেন:

import sys
print(sys.path)

বা টার্মিনাল থেকে একটি লাইনার হিসাবে:

python -c "import sys; print('\n'.join(sys.path))"

ক্যাভ্যাট : পাইথনের একাধিক সংস্করণ ইনস্টল করা থাকলে আপনার সংশ্লিষ্ট কমান্ড python2বা ব্যবহার করা উচিত python3


একই। লিনাক্স aaa.com 2.6.18-4-686-bigmem # 1 এসএমপি বুধ 6 জুন 09:41:07 ইউটিসি 2007 আই 686 জিএনইউ / লিনাক্স ...
দেবিয়ান সার্জে

7
বর্তমান রানটাইমের অজগর পথটি পাওয়ার জন্য এটিই প্ল্যাটফর্ম- এবং পরিবেশ-স্বাধীন উপায়।
দিমিত্রি মিনকভস্কি

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

পাইথন 3 এর জন্য:python -c "import sys; print('\n'.join(sys.path))"
মিরেসামিরোনেনকো

@ এমিরসিআমিরোনেনকো পরিবর্তিত হয়েছে
ভানুয়ান

10

অন্য উত্তরটি সম্পাদনা করতে পারে বলে মনে হচ্ছে না। এটিতে উইন্ডোজ-শুধুমাত্র একটি ছোটখাটো ত্রুটি রয়েছে। আরও সাধারণ সমাধানটি নীচের মতো ওএস.এসপ ব্যবহার করা:

sys.path এ আইটেমগুলি অন্তর্ভুক্ত থাকতে পারে যা বিশেষভাবে আপনার পাইথনপথ পরিবেশ পরিবর্তনশীল নয়। ভেরিয়েবলটি সরাসরি জিজ্ঞাসা করতে, ব্যবহার করুন:

import os
os.environ['PYTHONPATH'].split(os.pathsep)

6
ভবিষ্যতের পাঠকদের জন্য: os.sepঅপারেটিং সিস্টেমের জন্য ডিরেক্টরি বিভাজকটি প্রদান করে, যেমন /। পাইথন পথে ব্যবহৃত বিভাজকটি আলাদা এবং os.pathsepগ্রহণযোগ্য উত্তরে প্রদর্শিত হিসাবে ফিরে আসে returned
পল ডি ওয়েট

3

পাইথনপথ হ'ল একটি পরিবেশের পরিবর্তনশীল যার মান হ'ল ডিরেক্টরিগুলির একটি তালিকা। একবার সেট হয়ে গেলে এটি পাইথন দ্বারা অন্যান্য স্ট্যান্ড সহ আমদানি করা মডিউলগুলি অনুসন্ধান করতে ব্যবহৃত হয়। পাইথনের "sys.path" এ তালিকাভুক্ত তৃতীয় পক্ষের লাইব্রেরি ডিরেক্টরিগুলি।

অন্য যে কোনও পরিবেশের ভেরিয়েবল হিসাবে, আপনি এটি শেল বা ~ / .bashrc এ রফতানি করতে পারেন, এখানে দেখুন । পাইথনে এর মানটির জন্য নীচে প্রদর্শিত হিসাবে আপনি os.en वातावरण ['পাইথনপথ'] কে জিজ্ঞাসা করতে পারেন:

$ python3 -c "import os, sys; print(os.environ['PYTHONPATH']); print(sys.path) if 'PYTHONPATH' in sorted(os.environ) else print('PYTHONPATH is not defined')"

আইএফ হিসাবে শেল হিসাবে সংজ্ঞায়িত

$ export PYTHONPATH=$HOME/Documents/DjangoTutorial/mysite

তারপরে ফলাফল =>

/home/Documents/DjangoTutorial/mysite
['', '/home/Documents/DjangoTutorial/mysite', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']

ELSE ফলাফল =>

PYTHONPATH is not defined

পাইথনপথ একাধিক পথে সেট করতে, এখানে দেখুন

মনে রাখবেন যে কেউ রান-টাইমে sys.path.insert (), ডেল বা মুছে ফেলতে পারে (তবে) ওএস.ইনোমরেন্টের মাধ্যমে নয়] অনুসন্ধানের পথ যুক্ত করতে বা মুছতে পারে [ উদাহরণ:

>>> os.environ['PYTHONPATH']="$HOME/Documents/DjangoTutorial/mysite"
>>> 'PYTHONPATH' in sorted(os.environ)
True
>>> sys.path // but Not there
['', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']

>>> sys.path.insert(0,os.environ['PYTHONPATH'])
>>> sys.path // It's there
['$HOME/Documents/DjangoTutorial/mysite', '', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
>>> 

সংক্ষেপে, পাইথনপথ হ'ল সাইজ.পাথের আমদানি করা মডিউলগুলির জন্য পাইথন অনুসন্ধানের পথ (গুলি) নির্দিষ্ট করার একটি উপায়। আপনি পাইথনপথের সহায়তা ছাড়াই সরাসরি sys.path এ তালিকার ক্রিয়াকলাপ প্রয়োগ করতে পারেন।


0

পাইথন আমাকে জানায় এটি কোথায় থাকে যেখানে এটি আমাকে ত্রুটির বার্তা দেয় :)

>>> import os
>>> os.environ['PYTHONPATH'].split(os.pathsep)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\martin\AppData\Local\Programs\Python\Python36-32\lib\os.py", line 669, in __getitem__
    raise KeyError(key) from None
KeyError: 'PYTHONPATH'
>>>

-1

এটা ব্যবহার কর:

import sys
print(sys.executable)

অথবা সেন্টিমিডি থেকে একটি লাইন:

python -c "import sys; print(sys.executable)"

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