পাইথন স্ক্রিপ্টে আমি কীভাবে পাইথনপথ সেট করব?


115

আমি কীভাবে এটি আমার / ইত্যাদি / প্রোফাইলে এবং আমার পরিবেশের ভেরিয়েবলগুলিতে সেট করতে জানি।

তবে আমি যদি কোনও স্ক্রিপ্ট চলাকালীন সেট করতে চাই? এটি কি ওএস, এসইএস আমদানি করে? আমি এটা কিভাবে করব?

উত্তর:


192

আপনি সেট না PYTHONPATH, আপনি এন্ট্রি যোগ sys.path। এটি পাইাইথন প্যাকেজগুলির জন্য অনুসন্ধান করা উচিত ডিরেক্টরিগুলির একটি তালিকা, যাতে আপনি কেবলমাত্র সেই তালিকাতে আপনার ডিরেক্টরিগুলি যুক্ত করতে পারেন।

sys.path.append('/path/to/whatever')

প্রকৃতপক্ষে, পাথ বিভাজক চরিত্রের ( লিনাক্সের মতো সিস্টেমে, উইন্ডোজে) এর sys.pathমান ভাগ PYTHONPATHকরে শুরু করা হয় ।:;

আপনি ব্যবহার করে ডিরেক্টরিগুলিও যুক্ত করতে পারেন site.addsitedirএবং সেই পদ্ধতিটি .pthআপনার পাস হওয়া ডিরেক্টরিগুলির মধ্যে থাকা ফাইলগুলিকেও বিবেচনা করবে। (আপনি যে ডিরেক্টরিগুলি নির্দিষ্ট করেছেন তাতে এটি হবে না PYTHONPATH))


11
এই উত্তরটি পোস্ট হওয়ার পরে অনেক বছর হয়ে গেছে, তবে আমি এখনও যুক্ত করতে চাই যে আপনি যদি নিশ্চিত করতে চান যে আমদানি করার সময় পাইথন অন্য সকলের আগে নতুন ডিরেক্টরিটি পরীক্ষা করে দেখেন তবে আপনাকে নতুন ডিরেক্টরিটি তালিকায় প্রথমে রাখা উচিত, মধ্যে sys.path.insert(0, '/path/to/whatever')
wecsam

39

আপনি এর মাধ্যমে পরিবেশের ভেরিয়েবলগুলি পেতে এবং সেট করতে পারেন os.environ:

import os
user_home = os.environ["HOME"]

os.environ["PYTHONPATH"] = "..."

তবে যেহেতু আপনার দোভাষী ইতিমধ্যে চলছে, এর কোনও প্রভাব থাকবে না। আপনি ব্যবহার করা ভাল

import sys
sys.path.append("...")

যা অ্যারে যা আপনার PYTHONPATHদোভাষী শুরু করার সময় রূপান্তরিত হবে।


18

যদি আপনি sys.path.append('dir/to/path')চেক না করে রাখেন তবে এটি ইতিমধ্যে যুক্ত করা হয়েছে, আপনি একটি দীর্ঘ তালিকা তৈরি করতে পারেন sys.path। তার জন্য, আমি এটি সুপারিশ করছি:

import sys
import os # if you want this directory

try:
    sys.path.index('/dir/path') # Or os.getcwd() for this directory
except ValueError:
    sys.path.append('/dir/path') # Or os.getcwd() for this directory

2
খুশী হলাম। খুব পাইথোনিক।
আংশিক অর্ডার

1
আমি কীভাবে পাইথনপথ খালি করব? আমি সংযোজন করতে চাই না আমি এটি খালি করতে চাই এবং যা আমি কেবল ভিতরে চাই তা রাখতে চাই। এই কাজ করতে একটি উপায় আছে কি?
Schütze

আপনি কি সিস.পথ .__ দের __ () কল করে এটি পুনরায় আরম্ভ করার চেষ্টা করেছিলেন? এটি অজগর পথ খালি করা উচিত। আশাকরি এটা সাহায্য করবে.
থাইজ

@ ফ্রেঞ্চিস্কো-ম্যানুয়েল-গারকা-বোটেলা পুরানো প্রশ্নের উত্তর দেওয়া এই সাইটে খুব স্বাগত! আফসোস করার মতো কিছু নেই।
ব্যবহারকারী 7610

আমি একমত নয় যে এটি অজগর, এবং আমি পরামর্শ দেব যে এটি কোনও ভাল প্রোগ্রামিং পদ্ধতির নয়। ব্যতিক্রম ঘটলে ব্যতিক্রম হ্যান্ডলিং অত্যন্ত ব্যয়বহুল, সুতরাং আপনি এটি "যদি" বিবৃতিটি প্রতিস্থাপন করতে ব্যবহার করতে চান না যেখানে এটি সম্ভব যে আপনি অন্যটি ব্যবহার করবেন। সায়সপথে 'মাইপাথ' যদি একটি সরল ... অন্যথায় ... আমার পরামর্শ হবে।
মার্কগ্যালাসি

6

পাইথনপথ শেষ হয় সিএস.পথে , যা আপনি রানটাইমে সংশোধন করতে পারেন।

import sys
sys.path += ["whatever"]

@ ডেভিডজেডের যে কোনওটির চেয়ে এই উত্তরটিকে প্রাধান্য দেওয়ার কোনও কারণ আছে?
Dror

অন্য কিছু না হলে, এটি কম ভার্বোস।
ট্রিপলি

-1

আপনি সেট করতে পারেন PYTHONPATH, দ্বারা os.environ['PATHPYTHON']=/some/path, তারপর আপনাকে কল করার প্রয়োজন os.system('python')নতুন যোগ পথ কার্যকর করতে পাইথন শেল পুনরায় আরম্ভ করা।


1
os.system()"পাইথন শেলটি পুনরায় চালু করবেন না", এটি একটি নতুন ইন্টারেক্টিভ পাইথন উদাহরণ শুরু করে। আপনি যখন এটি থেকে ফিরে আসবেন, আপনি কলিং স্ক্রিপ্টে ফিরে আসবেন।
ট্রিপলি

-2

আমি এটিও কাজ করে:

import sys
sys.path.extend(["/path/to/dotpy/file/"])
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.