sys.path / পাইথনপথে ডিরেক্টরি যুক্ত করা হচ্ছে


130

আমি একটি বিশেষ ডিরেক্টরি থেকে একটি মডিউল আমদানি করার চেষ্টা করছি।

সমস্যাটি হ'ল আমি যদি sys.path.append(mod_directory)পথটি সংযোজন করি এবং তারপরে পাইথন ইন্টারপ্রেটারটি খুলি, ডিরেক্টরিটি mod_directorysys.path এর শেষে ডিরেক্টরিটি যুক্ত হয়ে যায়। PYTHONPATHপাইথন ইন্টারপ্রেটার খোলার আগে আমি যদি ভেরিয়েবলটি রফতানি করি তবে ডিরেক্টরিটি শুরু করার সাথে সাথে ডিরেক্টরিটি যুক্ত হয়ে যায়। পরবর্তী ক্ষেত্রে আমি মডিউলটি আমদানি করতে পারি তবে আগেরটিতে, আমি পারি না।

কেউ কীভাবে এটি ঘটছে তা ব্যাখ্যা করতে পারেন এবং পাইথন স্ক্রিপ্টের ভিতরে আমাকে mod_directoryশুরুতে যোগ করার জন্য একটি সমাধান দিতে পারেন ?


আমি siteমডিউল চেষ্টা করেছি ।
জিনব আব্বাসিমাজার

উত্তর:


178

এটি দলিল হিসাবে কাজ করছে। সুনির্দিষ্ট যে কোনও পাথ PYTHONPATHওয়ার্কিং ডিরেক্টরি পরে সাধারণত স্ট্যান্ডার্ড দোভাষী-সরবরাহকারী পাথের আগে নথিভুক্ত করা হয়। sys.path.append()বিদ্যমান পথে সংযোজন। দেখুন এখানে এবং এখানে । আপনি যদি কোনও নির্দিষ্ট ডিরেক্টরি আগে আসতে চান তবে কেবল এটি সিস.পাথের শিরোনামে সন্নিবেশ করুন:

import sys
sys.path.insert(0,'/path/to/mod_directory')

এটি বলেছে যে, সরাসরি ব্যবহার PYTHONPATHবা হস্তক্ষেপের চেয়ে আমদানি পরিচালনা করার আরও ভাল উপায় আছে sys.path। উদাহরণস্বরূপ, এই প্রশ্নের উত্তরগুলি দেখুন ।


উত্তরের জন্য ধন্যবাদ. সমস্যাটি হ'ল আমি বুঝতে পারি নি যে .egg ফাইল হিসাবে প্যাকেজযুক্ত মডিউলটি যুক্ত করতে আপনাকে পাইথন
২. in-তে

2
আরে মানুষ, এটা আমার জ্যাঙ্গো ভেঙে দিয়েছে। আপনি কি নিশ্চিত যে মানুষকে এটি শীর্ষে রাখতে বলেছেন?!? !!?
আর ক্লেন

16
@ আরক্লেভেন, দুঃখিত, আপনি কী পদক্ষেপ এবং ফলাফলের কথা উল্লেখ করছেন তা বলা শক্ত: "এটিকে শীর্ষে রাখুন" এবং "আমার জ্যাঙ্গো ভেঙে ফেলা" খুব সুনির্দিষ্ট নয়। তুমি কি বিস্তারিত বলতে পারো?
নেড ডিলি

কীভাবে আরো sys.path কাজ জন্য, এই উত্তর দেখার stackoverflow.com/a/38403654/850326
djhaskin987

2
আপনার সত্যিই "0" এর পরিবর্তে "1" ব্যবহার করা উচিত! অন্যথায় আপনি sys.path বিরতি । স্ট্যাকওভারফ্লো . com/q/10095037/125507 দেখুন ।
Kadee


6

আমার হিসাবে, আমার অজগর পথটি আঁকতে হবে। আমি ফাইলে এটা পথে যোগ করতে পারেন /home/xy/.bashrcঅ্যাড দ্বারা

export PYTHONPATH=/home/xy/caffe-master/python:$PYTHONPATH

আমার /home/xy/.bashrcফাইলে

তবে আমি যখন পাইচার্ম ব্যবহার করি, তখনও পথটি প্রবেশ করে না।

সুতরাং আমি PYTHONPATHরান -> কনফিগারেশন সম্পাদনা করে চলকটিতে পাথ যুক্ত করতে পারি ।

এখানে চিত্র বর্ণনা লিখুন


সহজতম উত্তরটি হ'ল, উন্নয়নের জন্য এটি যুক্ত করুন স্বয়ংক্রিয়রূপে কাজ করবে
গ্যাং

আমি উপরে বর্ণিত হিসাবে .bashrc আপডেট করেছি তবে জুপিটার নোটবুকে প্রতিফলিত হয়নি। জুপিটার নোটবুক এখনও বলে মডিউল পাওয়া যায় নি।
অথার

3

অস্থায়ীভাবে ডায়ারগুলি পরিবর্তন করা আমদানির জন্য ভাল কাজ করে:

cwd = os.getcwd()
os.chdir(<module_path>)
import <module>
os.chdir(cwd)

0

উইন্ডোজ এর অধীনে পাওয়ারশেল থেকে পাইথন স্ক্রিপ্ট চালানোর সময়, এটি কাজ করা উচিত:

$pathToSourceRoot = "C:/Users/Steve/YourCode"
$env:PYTHONPATH = "$($pathToSourceRoot);$($pathToSourceRoot)/subdirs_if_required"

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