2012-11-29 15 views
6

से एक फ़ाइल आयात करें मैं अजगर 2.7 का उपयोग कर रहा हूं। मैंने एक स्क्रिप्ट लिखी है, मुझे किसी अन्य फ़ाइल से फ़ंक्शन आयात करने की आवश्यकता है जो विभिन्न फ़ोल्डर में है। मेरी स्क्रिप्ट पथ में हैविभिन्न निर्देशिका

C:\python\xyz\xls.py 

फ़ाइल समारोह है कि मैं कॉल करने की आवश्यकता होने का मार्ग

C:\python\abc.py 

मैं इस

from python.abc import * 

तरह की कोशिश की, लेकिन यह काम नहीं कर रहा है। क्या फ़ंक्शन को कॉल करने का कोई अन्य तरीका है या मुझे फ़ाइलों को एक ही निर्देशिका में स्थानांतरित करने की आवश्यकता है? कृपया मदद धन्यवाद

उत्तर

11

के माध्यम से जाना चाहिए से फ़ाइलें आयात कर सकते C:\python में एक __init__.py फ़ाइल जोड़ने आप गतिशील रूप से एक फ़ाइल से एक मॉड्यूल लोड कर सकते हैं:

import imp 
modl = imp.load_source('modulename', '/path/to/module.py') 

imp module docs आपको अधिक जानकारी देगा।

+0

धन्यवाद morphyn, उत्तर उपयोगी है – user19911303

+0

यह काम करता है, लेकिन modl.class_name को कॉल किए बिना मॉड्यूल से कक्षाओं का उपयोग करने का कोई तरीका है? बस class_name? – Alleo

+0

ठीक है, आप 'ClassName = modl.ClassName' कर सकते हैं और फिर इसे सीधे उपयोग कर सकते हैं। –

4

आप बिल्ली PYTHONPATH वातावरण चर सेट:

c:\> set PYTHONPATH=c:\python 

और फिर, सामान्य रूप से:

from abc import * 

वैकल्पिक रूप से, अगर आप नहीं चाहते हैं या नहीं बदल सकते पर्यावरण, आप रनटाइम पर पथ बदल सकते हैं:

import sys 
sys.path.append(r'c:\Python') 
from abc import * 
+0

या इसके कामकाजी ठीक धन्यवाद रॉड्रिगो। – user19911303

+0

यदि मैं 2 अलग-अलग फ़ाइलों में 2 फ़ंक्शंस को कॉल करना चाहता हूं तो मैं कैसे उपयोग कर सकता हूं? मैंने इस की तरह कोशिश की .... आयात sys .... sys.path.append (r'c: \ Python ') .... xyz.abc आयात से * .... qwe से .... एफएच आयात * लेकिन यह काम नहीं कर रहा है। कृपया – user19911303

+1

@ राघवेंद्र की सहायता करें: यह एक अलग सवाल है, इसलिए शायद आपको इसे इस तरह पोस्ट करना चाहिए। वैसे भी, ऐसा लगता है कि आप संकुल आयात करने की कोशिश कर रहे हैं, सादे मॉड्यूल नहीं, इसलिए मुझे लगता है कि एक __init__.py फ़ाइल की आवश्यकता होगी। बीटीडब्ल्यू, पाइथन निर्देशिका में अपने मॉड्यूल को मिलाकर शायद यह एक अच्छा विचार नहीं है ...आपको अपनी परियोजनाओं के लिए एक नई निर्देशिका बनाना चाहिए। – rodrigo

2

जोड़ें sys.path

मेंभी इतनी है कि अजगर दुभाषिया इस फ़ोल्डर

आप link

1

import_file पर एक नज़र डालें। कुछ उदाहरण:

>>>from import_file import import_file

>>>mylib = import_file('c:\mylib.py')

>>>another = import_file('relative_subdir/another.py')

+0

धन्यवाद टेंगिस, लेकिन यह "import_file आयात import_file से" लाइन के लिए त्रुटि दिखा रहा है – user19911303

0

उपयोग इस ऊपर अजगर 3.5 & लिए।

import importlib.util 
spec = importlib.util.spec_from_file_location("name", "path/to/file") 
foo = importlib.util.module_from_spec(spec) 
spec.loader.exec_module(foo) 
foo.MyClass() 
संबंधित मुद्दे