পাইথন: PATH পরিবেশ পরিবর্তনশীলকে সংশোধন করার জন্য প্ল্যাটফর্মের স্বতন্ত্র উপায়


92

PATHপাইথন ব্যবহার করে একটি প্ল্যাটফর্মের স্বাধীন উপায়ে পরিবেশ পরিবর্তনশীলকে পরিবর্তন করার কোনও উপায় আছে কি ?

এর মতো কিছু os.path.join()?

উত্তর:


174

আপনি পরিবর্তন করতে সক্ষম হওয়া উচিত os.environ

যেহেতু os.pathsepবিভিন্ন পাথ পৃথক করার চরিত্রটি তাই প্রতিটি নতুন পাথ যুক্ত করার জন্য আপনার এটি ব্যবহার করা উচিত:

os.environ["PATH"] += os.pathsep + path

বা, যদি তালিকায় যুক্ত করার জন্য কয়েকটি পথ থাকে:

os.environ["PATH"] += os.pathsep + os.pathsep.join(pathlist)

যেমনটি আপনি উল্লেখ করেছেন, os.path.joinপ্রতিটি পৃথক পাথের জন্যও আপনাকে পৃথক অংশ থেকে এগুলি নির্মাণ করতে হবে এমন ক্ষেত্রে ব্যবহার করতে পারেন।


পথ পরিবেশ বিভাজকগুলির সাথে কী? ? লিনাক্স - / usr / bin: / lib: ":" উইন্ডোজ - সি: \্যাসেডএফ \; সি: \ প্রগ ... "
বুয়া

4
@ বুয়া: আপনি কি os.pathsepআমি উল্লেখ করেছেন ( পথের কাছে নির্দিষ্ট)?
রেডগ্লাইফ

@ রেডগ্লাইফ হ্যাঁ, দুঃখিত আমি ভেবেছিলাম যে os.pathsep "/" এবং "\"। আমি দাবি করার আগে তা পরীক্ষা করে দেখিনি;)।
বুয়া

11
@ বুয়া: এটি প্রায় একটি "গোটচা" os.path.sep != os.pathsep
ক্রয়্যোতি

@ ক্রয়্যোতি, বুয়া: আহ, এখন দেখছি ... ভাল দাগ! এটি আসলেই একটি সহজ ভুল :-)
রেডগ্লাইফ

18

দয়া করে মনে রাখবেন যে os.environএটি আসলে একটি অভিধান নয়। এটি একটি বিশেষ অভিধানের মতো বস্তু যা সেন্টেনভ ব্যবহার করে বর্তমান প্রক্রিয়ায় বাস্তবে পরিবেশের ভেরিয়েবল সেট করে ।

>>> os.environ.__class__
<class os._Environ at 0x100472050>
>>> import os
>>> os.environ["HELLO"] = "WORLD"
>>> os.getenv("HELLO")
'WORLD'

এর অর্থ হ'ল PATH(এবং অন্যান্য পরিবেশের ভেরিয়েবলগুলি) একই প্রক্রিয়াতে সি কোড চালানোর জন্য দৃশ্যমান হবে

(যেহেতু মন্তব্যে ফরম্যাটিং থাকতে পারে না, তাই আমি এটি একটি উত্তর দিতে হবে, তবে আমি মনে করি এটি তৈরি করা একটি গুরুত্বপূর্ণ বিষয় export 'রফতানির' সমতুল্য না হওয়ার বিষয়ে মন্তব্যটিতে এটি একটি মন্তব্য ।)


6

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


+1 টি: বিজ্ঞ যে নির্দেশ, কমান্ড পছন্দ os.system, os.popenবা subprocess.Popenতারপর প্রক্রিয়া আরম্ভ করার জন্য পাইথন অ্যাপ্লিকেশন থেকে ব্যবহার করা উচিত। অন্যথায় এটি বেশ অর্থহীন।
রেডগ্লাইফ

4
গ্লিফের এর বিবৃতির ব্যাখ্যা: এই কারণে পরিবর্তন সত্য নয় হয় বর্তমান প্রক্রিয়ার মধ্যে ইনজেকশনের (যা পাইথন প্রক্রিয়া)। ওপি সম্ভবত অভিভাবক প্রসেসে ইনজেকশন দেওয়ার কোনও উপায় নেই (যা সাধারণত একটি শেল যা পাইথন স্ক্রিপ্টটি কার্যকর করা হয়েছিল) meant
পনিয়ার্স

4
যদি ওপি এর অর্থ এটিই হয় তবে শেলেরও এই ক্ষমতা নেই; exportএকটি ভেরিয়েবলের সকলের পরিবেশে অনুলিপি তৈরি করে শিশু প্রক্রিয়া , কিন্তু পিতামাতার প্রক্রিয়া উপর কোন প্রভাব নেই।
কাইল স্ট্র্যান্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.