যখনই আমি ব্যবহার করব sys.path.append
, নতুন ডিরেক্টরি যুক্ত করা হবে। যাইহোক, আমি একবার অজগর বন্ধ করলে তালিকাটি পূর্ববর্তী (ডিফল্ট?) মানগুলিতে ফিরে আসবে। আমি কীভাবে স্থায়ীভাবে কোনও ডিরেক্টরি এতে যুক্ত করব PYTHONPATH
?
যখনই আমি ব্যবহার করব sys.path.append
, নতুন ডিরেক্টরি যুক্ত করা হবে। যাইহোক, আমি একবার অজগর বন্ধ করলে তালিকাটি পূর্ববর্তী (ডিফল্ট?) মানগুলিতে ফিরে আসবে। আমি কীভাবে স্থায়ীভাবে কোনও ডিরেক্টরি এতে যুক্ত করব PYTHONPATH
?
উত্তর:
আপনাকে পরিবেশের পরিবর্তনশীলতে আপনার নতুন ডিরেক্টরি যুক্ত করতে হবে PYTHONPATH
, পূর্ববর্তী বিষয়বস্তু থেকে কোনও কোলন দ্বারা পৃথক করা উচিত। ইউনিক্সের যে কোনও আকারে, আপনি যে শেলটি ব্যবহার করছেন ( .profile
বা যা কিছু হোক না কেন, আপনার পছন্দের শেলের উপর নির্ভর করে) যে কোনও কমান্ড যা আবার প্রশ্নে থাকা শেলের উপর নির্ভর করে তার জন্য উপযুক্ত স্টার্টআপ স্ক্রিপ্টে আপনি এটি করতে পারেন ; উইন্ডোজে, আপনি এই উদ্দেশ্যে GUI সিস্টেমের মাধ্যমে এটি করতে পারেন।
superuser.com
আরও জিজ্ঞাসা করার জন্য এটি আরও ভাল জায়গা হতে পারে, যেমন আপনার নির্বাচিত প্ল্যাটফর্ম এবং শেলটিতে পরিবেশের পরিবর্তনশীলকে কীভাবে সমৃদ্ধ করা যায় সে সম্পর্কে আপনার যদি সুনির্দিষ্ট বিবরণ প্রয়োজন তবে যেহেতু এটি প্রতি সেমি আসলেই প্রোগ্রামিংয়ের প্রশ্ন নয়।
আপনি যদি ব্যাশ ব্যবহার করছেন (একটি ম্যাক বা জিএনইউ / লিনাক্স ডিস্ট্রোতে), এটি আপনার যুক্ত করুন ~/.bashrc
export PYTHONPATH="${PYTHONPATH}:/my/other/path"
~/.bashrc
তারপর চালানো source ~/.bashrc
দেখুন stackoverflow.com/questions/2518127/...
sudo su
হয় আপনার .bashrc ফাইলটির শুরুতে রাখা খারাপ ধারণা । এই পোস্টটি আমার সাথে একমত। আমার সিস্টেমে, কমপক্ষে, এটি এমনকি প্রয়োজনীয়ও নয়।
কারসাজির পরিবর্তে PYTHONPATH
আপনি একটি পাথ কনফিগারেশন ফাইলও তৈরি করতে পারেন । পাইথন কোন ডিরেক্টরিতে এই তথ্যটি অনুসন্ধান করে তা সন্ধান করুন:
python -m site --user-site
কিছু কারণে পাইথন ২.7-এ কাজ করবে বলে মনে হচ্ছে না। সেখানে আপনি ব্যবহার করতে পারেন:
python -c 'import site; site._script()' --user-site
তারপরে .pth
সেই ডিরেক্টরিতে একটি ফাইল তৈরি করুন যাতে আপনি যে পথটি যুক্ত করতে চান তা যুক্ত করে (ডিরেক্টরিটি উপস্থিত না থাকলে এটি তৈরি করুন)।
উদাহরণ স্বরূপ:
# find directory
SITEDIR=$(python -m site --user-site)
# create if it doesn't exist
mkdir -p "$SITEDIR"
# create new .pth file with our path
echo "$HOME/foo/bar" > "$SITEDIR/somelib.pth"
python -m site --user-site
এবং (create the directory if it doesn't exist)
অংশগুলি ছিল।
somelib.pth
? যদি তা না হয় তবে কোনও অনুমান কেন এটি কাজ করছে না?
এটি উইন্ডোজে কাজ করে
তারপরে আপনি আপনার স্ক্রিপ্টগুলি থেকে সমস্ত পাথের মধ্যে সমস্ত মডিউল দেখতে সক্ষম হবেন।
যদি কেউ এখনও বিভ্রান্ত হয় - আপনি যদি ম্যাকের সাথে থাকেন তবে নিম্নলিখিতটি করুন:
open .bash_profile
export PYTHONPATH=$PYTHONPATH:foo/bar
export
কীটি হ'ল আমি যা মিস করছিলাম !!!!, উত্সাহিত, ধন্যবাদ অনেক!
আপনি আপনার পাইথনআরসি ফাইলের মাধ্যমে পাথ যুক্ত করতে পারেন, যা লিনাক্সের ~ / .pythonrc এ ডিফল্ট। অর্থাত।
import sys
sys.path.append('/path/to/dir')
আপনি PYTHONPATH
একটি বৈশ্বিক আরসি ফাইল যেমন পরিবেশ বা পরিবর্তনশীল সেট করতে পারেন ~/.profile
ম্যাক বা লিনাক্সের উপর, বা নিয়ন্ত্রণ প্যানেল -> সিস্টেম -> অ্যাডভান্সড ট্যাব -> উইন্ডোতে পরিবেশ পরিবর্তনশীল।
আরও কিছুটা ব্যাখ্যা দেওয়ার জন্য পাইথন স্বয়ংক্রিয়ভাবে স্ক্রিপ্টটি (সাধারণত সিএস.প্রেফিক্স + তে পাশাপাশি অবস্থিত ) স্ক্রিপ্টটি ব্যবহার করে তার অনুসন্ধানের পথগুলি (স্বয়ংক্রিয়ভাবে উপরে এবং এখানে বর্ণিত ) তৈরি করবে । কেউ সিস.প্রিফিক্সের মান পেতে পারে:site.py
lib/python<version>/site-packages
lib/site-python
python -c 'import sys; print(sys.prefix)'
Site.py স্ক্রিপ্ট তারপর যেমন ডিরেক্টরি, প্ল্যাটফর্ম উপর নির্ভরশীল, একটি নম্বর যোগ করে /usr/{lib,share}/python<version>/dist-packages
, /usr/local/lib/python<version>/dist-packages
সার্চ-পাথের এবং জন্য এই পাথ অনুসন্ধান করে <package>.pth
ফাইল নির্দিষ্ট অতিরিক্ত সার্চ পাথ ধারণ কনফিগ। উদাহরণস্বরূপ সহজ-ইনস্টলটি ইনস্টল করা প্যাকেজগুলির সংগ্রহগুলি বজায় রাখে যা উবুন্টুতে যেমন একটি নির্দিষ্ট সিস্টেমের ফাইলগুলিতে যুক্ত হয় /usr/local/lib/python2.7/dist-packages/easy-install.pth
। একটি সাধারণ সিস্টেমে এই .pth ফাইলগুলির একটি গুচ্ছ রয়েছে যার চারপাশে সিএস.পথের কিছু অপ্রত্যাশিত পথ ব্যাখ্যা করা যেতে পারে:
python -c 'import sys; print(sys.path)'
সুতরাং কেউ একটি। Pth ফাইল তৈরি করতে পারে এবং এর মধ্যে যে কোনও ডিরেক্টরিতে রেখে দিতে পারে ( উপরে বর্ণিত সিটিডির সহ )। পাইথনপথ ব্যবহারের বিপরীতে বেশিরভাগ প্যাকেজগুলি sys.path- এ যুক্ত হওয়ার উপায় বলে মনে হয়।
দ্রষ্টব্য: ওএসএক্সে সাইটফাই দ্বারা 'ফ্রেমওয়ার্ক তৈরি করে' (তবে পাইথনের সাধারণ কমান্ড লাইন ব্যবহারের জন্য কাজ করে বলে মনে হচ্ছে) এর জন্য একটি অতিরিক্ত অতিরিক্ত অনুসন্ধানের পথ যুক্ত করা হয়েছে: /Library/Python/<version>/site-packages
(উদাহরণস্বরূপ পাইথন 2.7:) /Library/Python/2.7/site-packages/
যেখানে তৃতীয় পক্ষের প্যাকেজগুলি অনুমিত হয় ইনস্টল করা হবে (সেই ডায়ারে README দেখুন)। সুতরাং সেখানে অতিরিক্ত অনুসন্ধানের পাথ /Library/Python/2.7/site-packages/pip-usr-local.pth
রয়েছে এমন একটি পথের কনফিগারেশন ফাইল যুক্ত করতে পারে উদাহরণস্বরূপ এমন একটি ফাইল তৈরি করুন যা এতে রয়েছে /usr/local/lib/python2.7/site-packages/
অজগর সেই অনুসন্ধানের পথটি যুক্ত করবে।
আমার পক্ষে .bash_profile
ফাইলটি পরিবর্তন করার সময় এটি কাজ করেছিল । .bashrc
আমি শেলটি পুনরায় চালু না করা পর্যন্ত কেবল ফাইল পরিবর্তন করা কাজ করেছিল।
অজগর ২.7 এর মতো দেখতে এটি দেখতে পাওয়া উচিত:
export PYTHONPATH="$PYTHONPATH:/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python"
.bash_profile
ফাইলের শেষে ।
Exist export PYTHONPATH="${PYTHONPATH}:/my/other/path"
/ .bashrc এ যুক্ত করা PYTHONPATH
বর্তমানে কাজ না করার কারণে (কারণ এটি :
) কাজ নাও করতে পারে ।
export PYTHONPATH="/my/other/path1"
export PYTHONPATH="${PYTHONPATH}:/my/other/path2"
উপরেরটি আমার। / .Bashrc এ যুক্ত করা উবুন্টু 16.04-এ আমার জন্য কৌশলটি করেছে
echo PYTHONPATH
এবং কিছুই দেখানো হয়নি ! তার অর্থ এই পাইথনপথটি আরম্ভ করা হয়নি, তাই আমি এই ফাইলটি export PYTHONPATH=$PYTHONPATH:<PATH_TO_TF>/TensorFlow/models/research/object_detection
আমার ~/.bashrc
ফাইলটিতে আটকান source ~/.bashrc
। পরে, আমি যখন `প্রতিধ্বনি $ পাইথনপথটি দিয়েছিলাম, তখন আমি কোনও :<PATH_TO_TF>/TensorFlow/models/research/object_detection
ভুল করেছি কিনা সে সম্পর্কে কোনও পরামর্শ?
export PYTHONPATH=<PATH_TO_TF>/TensorFlow/models/research/object_detection
, যখন আপনি ${PYTHONPATH}:
:<PATH_TO_TF>/TensorFlow/models/research/object_detection
এবং দ্বিতীয়টি মুছে ফেলে export PYTHONPATH=$PYTHONPATH:/TensorFlow/models/research/slim
। এটি সম্পর্কে কোনও পরামর্শ, কীভাবে এটি ঠিক করবেন?
পাইথনপথটিতে একটি নতুন পথ যুক্ত করুন ম্যানুয়ালি করে যাচ্ছেন:
আপনার ~ / .bashrc প্রোফাইলে পাথ যুক্ত করে টার্মিনালে:
vim ~/.bashrc
নিম্নলিখিতটি আপনার প্রোফাইলে পেস্ট করুন
export PYTHONPATH="${PYTHONPATH}:/User/johndoe/pythonModule"
তারপরে, আপনি যখন টার্মিনালে আপনার কোডটি চালাবেন তখনই আপনার বাশার্ক প্রোফাইলটি উত্স করে দেওয়ার বিষয়টি নিশ্চিত করুন:
source ~/.bashrc
আশাকরি এটা সাহায্য করবে.
আমি উইন্ডোজ ভিস্তা, পাইথন 3.5 তে স্থায়ীভাবে যুক্ত করেছি
সিস্টেম> কন্ট্রোল প্যানেল> উন্নত সিস্টেম সেটিংস> উন্নত (ট্যাপ) পরিবেশগত পরিবর্তনসমূহ> সিস্টেম পরিবর্তনশীল> (আপনি যদি পরিবর্তনশীল কলামে পাইথনপথটি না দেখেন) (ক্লিক করুন) নতুন> পরিবর্তনশীল নাম: পাইথনপথ> পরিবর্তনীয় মান:
দয়া করে ভেরিয়েবল মানটিতে ডিরেক্টরিটি লিখুন। এটি ব্লু মরিচের উত্তরগুলির বিবরণ।
নিচের স্ক্রিপ্টটি সমস্ত প্ল্যাটফর্মগুলিতে খাঁটি পাইথন হিসাবে কাজ করে। এটি ক্রস-প্ল্যাটফর্মের কাজ করতে এখানে https://docs.python.org/3/library/pathlib.html এখানে নথিবদ্ধ পাথলিব পাথটি ব্যবহার করে । আপনি এটি একবার চালান, কার্নেলটি পুনরায় চালু করুন এবং এটিই। Https://medium.com/@arnaud.bertrand/modifying-python-s-search-path-with-pth-files-2a41a4143574 দ্বারা অনুপ্রাণিত ।
from pathlib import Path
to_add=Path(path_of_directory_to_add)
from sys import path
if str(to_add) not in path:
minLen=999999
for index,directory in enumerate(path):
if 'site-packages' in directory and len(directory)<=minLen:
minLen=len(directory)
stpi=index
pathSitePckgs=Path(path[stpi])
with open(str(pathSitePckgs/'current_machine_paths.pth'),'w') as pth_file:
pth_file.write(str(to_add))
এটি এই থ্রেডের একটি আপডেট যা এর কিছু পুরানো উত্তর রয়েছে।
যারা ম্যাক-ওএস ক্যাটালিনা ব্যবহার করেন বা কিছু নতুন (> = 10.15), এটি একটি নতুন টার্মিনাল চালু করা হয়েছিল zsh
(পুরানো বিকল্প bash
)।
এই পরিবর্তনের কারণে উপরের উত্তরগুলি নিয়ে আমার কিছু সমস্যা হয়েছিল এবং আমি কিছুটা ফাইল তৈরি ~/.zshrc
করে ফাইল ডিরেক্টরিটি আটকিয়ে কিছুটা মিটিয়েছিলাম$PATH
এবং$PYTHONPATH
সুতরাং, আমি প্রথমে করেছি:
nano ~/.zshrc
সম্পাদকটি খুললে আমি নিম্নলিখিত সামগ্রীটি আটকালাম:
export PATH="${PATH}:/Users/caio.hc.oliveira/Library/Python/3.7/bin"
export PYTHONPATH="${PYTHONPATH}:/Users/caio.hc.oliveira/Library/Python/3.7/bin"
এটি সংরক্ষণ করে টার্মিনালটি পুনরায় চালু করুন।
গুরুত্বপূর্ণ: উপরের পাথটি আমার কম্পিউটারের পথে সেট করা হয়েছে, আপনাকে এটি আপনার অজগরটির সাথে মানিয়ে নিতে হবে।
পাইথন ৩.6.৪-তে আপনি পাইথন সেশন জুড়ে sys.path চালিয়ে যেতে পারেন:
import sys
import os
print(str(sys.path))
dir_path = os.path.dirname(os.path.realpath(__file__))
print(f"current working dir: {dir_path}")
root_dir = dir_path.replace("/util", '', 1)
print(f"root dir: {root_dir}")
sys.path.insert(0, root_dir)
print(str(sys.path))
আমি দৃ strongly়ভাবে পরামর্শ দিচ্ছি যে আপনি ভার্চুয়ালেনভ এবং ভার্চুয়ালেনভ্রাপার ব্যবহার করুন অন্যথায় আপনি আপনার পথটিকে বিশৃঙ্খল করবেন