পাইথনপথ এনভায়রনমেন্ট ভেরিয়েবল… এরপরে আমি কীভাবে প্রতিটি উপ-ডিরেক্টরিকে তৈরি করব?


9

আমি বর্তমানে এটি করছি:

PYTHONPATH=/home/$USER:/home/$USER/respository:/home/$USER/repository/python-stuff

আমি কীভাবে এটি তৈরি করতে পারি যাতে পাইথনপথ সমস্ত উপ-ডিরেক্টরিকে অন্তর্ভুক্ত করতে পারে?

PYTHONPATH = /home/$USER/....and-all-subdirectories

উত্তর:


14

পাইথনপথ কীভাবে এটি কাজ করে না; পাইথনপথ শেলপাথ থেকে তার অনুসন্ধানের পথকে আলাদাভাবে আচরণ করে। আসুন বলি আমি এটি করি:

$ mkdir /home/jsmith/python
$ cd /home/jsmith/python
$ touch a.py b.py

পাইথনে এটি কাজ করবে ( sys.pathবর্তমান ডিরেক্টরি অন্তর্ভুক্ত করবে):

$ cd /
$ PYTHONPATH=/home/jsmith/python python2.6

Python 2.6.1 (r261:67515, Jul  7 2009, 23:51:51)
>>> import a, b   # Works
>>> quit()

তবে ডিরেক্টরিতে __init__.pyউপস্থিত থাকার সময় উপ-ডিরেক্টরিগুলি প্যাকেজ হিসাবে বিবেচিত হয় এবং পাইথনপথ দ্বারা উপেক্ষা করা হয়:

$ mkdir /home/jsmith/python/pkg
$ cd /home/jsmith/python/pkg
$ touch __init__.py c.py d.py
$ cd /
$ PYTHONPATH=/home/jsmith/python python2.6

Python 2.6.1 (r261:67515, Jul  7 2009, 23:51:51)
>>> import a, b   # Works
>>> import c
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named c

সেই উপ-ডিরেক্টরিতে কিছু পেতে, এটি কাজ করবে:

>>> from pkg import c   # Works
>>> import pkg.c        # Works

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


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

1

পরিবেশ প্যাথ ভেরিয়েবলগুলি কীভাবে এটি কাজ করে না - আপনি এটিকে শীর্ষ-স্তরের ডিরেক্টরিটি সরবরাহ করেন এবং ডিরেক্টরি ট্রি প্রয়োজন হলে এটি পুনরুক্ত করার জন্য অ্যাপ্লিকেশনটি আপ।


সুতরাং, আমার কাছে যদি / home/$USER/myfile.py এর অধীনে একটি অজগর ফাইল থাকে আমি কি এটি আমদানি করতে পারি?
অ্যালেক্স

অবশ্যই, তুমি পারো না কেন?
EEAA

1

অবশ্যই শেলটি ব্যবহার করে আপনার পাইথনপ্যাথ ভেরিয়েবলের সাথে ডিরেক্টরিটির উপ-ডিরেক্টরিগুলি যুক্ত করা সম্ভব। আমি বর্তমানে আমার .bashrc এ নিম্নলিখিতগুলির মতো কিছু ব্যবহার করছি:

export PYTHONPATH="$(find $HOME/ -maxdepth 2 -type d | sed '/\/\./d' | tr '\n' ':' | sed 's/:$//')"

এটিতে আপনার ব্যবহারকারীর ফোল্ডারের সমস্ত সাব-ডাইরেক্টরিগুলিকে গাছের 2 গভীরতায় অন্তর্ভুক্ত করা হবে। ফাইন্ড কমান্ড ডিরেক্টরিগুলি ('-type d') সনাক্ত করে এবং নীচের sed এবং tr কমান্ডগুলি PATH ভেরিয়েবলগুলির স্বাভাবিক উপায়ে আউটপুটটিকে বিন্যাস করে।

'-ম্যাক্সডেপথ ২' ছাড়ার ফলে আপনার বাড়ির ফোল্ডারের সমস্ত সাব-ডাইরেক্টরি অন্তর্ভুক্ত থাকবে যা সম্ভবত অনুসন্ধানের জন্য যথেষ্ট। সম্ভবত এটি শুধুমাত্র আপনার $ হোম / সংগ্রহস্থল / পাইথন-স্টাফ ডিরেক্টরিতে করা উচিত।

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