python - पायथन: अन्य पायथन फ़ाइलों को कैसे आयात करें




python-import (7)

एक पाइथन फ़ाइल आयात करने के कई तरीके हैं, सभी अपने पेशेवरों और विपक्ष के साथ।

केवल आपके लिए काम करने वाली पहली आयात रणनीति न करें या अन्यथा आपको कोडबेज को फिर से लिखना होगा जब आपको लगता है कि यह आपकी आवश्यकताओं को पूरा नहीं करता है।

मैं सबसे आसान उदाहरण # 1 समझाऊंगा, फिर मैं सबसे पेशेवर और मजबूत उदाहरण # 7 की ओर बढ़ जाऊंगा

उदाहरण 1, पायथन दुभाषिया के साथ एक अजगर मॉड्यूल आयात करें:

  1. इसे /home/el/foo/fox.py में रखें:

    def what_does_the_fox_say():
      print("vixens cry")
    
  2. पायथन दुभाषिया में जाओ:

    [email protected]:/home/el/foo$ python
    Python 2.7.3 (default, Sep 26 2013, 20:03:06) 
    >>> import fox
    >>> fox.what_does_the_fox_say()
    vixens cry
    >>> 
    

    आपने अजगर दुभाषिया के माध्यम से लोमड़ी आयात की, what_does_the_fox_say() भीतर से python function what_does_the_fox_say() को बुलाया।

उदाहरण 2, अन्य पायथन फ़ाइल को स्थानांतरित करने के लिए किसी स्क्रिप्ट में execfile या ( पायथन 3 में निष्पादन ) का उपयोग करें:

  1. इसे /home/el/foo2/mylib.py में रखें:

    def moobar():
      print("hi")
    
  2. इसे /home/el/foo2/main.py में रखें:

    execfile("/home/el/foo2/mylib.py")
    moobar()
    
  3. फ़ाइल चलाएं:

    [email protected]:/home/el/foo$ python main.py
    hi
    

    फ़ंक्शन moobar mylib.py से आयात किया गया था और main.py में उपलब्ध कराया गया था

उदाहरण 3, से उपयोग करें ... आयात ... कार्यक्षमता:

  1. इसे /home/el/foo3/chekov.py में रखें:

    def question():
      print "where are the nuclear wessels?"
    
  2. इसे /home/el/foo3/main.py में रखें:

    from chekov import question
    question()
    
  3. इसे इस तरह से चलाएं:

    [email protected]:/home/el/foo3$ python main.py 
    where are the nuclear wessels?
    

    यदि आपने chekov.py में अन्य फ़ंक्शंस को परिभाषित किया है, तो वे तब तक उपलब्ध नहीं होंगे जब तक आप import * नहीं करते import *

उदाहरण 4, आयात करें riaa.py अगर यह एक अलग फ़ाइल स्थान में है जहां से इसे आयात किया जाता है

  1. इसे /home/el/foo4/stuff/riaa.py में रखें:

    def watchout():
      print "computers are transforming into a noose and a yoke for humans"
    
  2. इसे /home/el/foo4/main.py में रखें:

    import sys 
    import os
    sys.path.append(os.path.abspath("/home/el/foo4/stuff"))
    from riaa import *
    watchout()
    
  3. चलाओ:

    [email protected]:/home/el/foo4$ python main.py 
    computers are transforming into a noose and a yoke for humans
    

    यह विदेशी फ़ाइल में एक अलग निर्देशिका से सबकुछ आयात करता है।

उदाहरण 5, os.system("python yourfile.py") उपयोग os.system("python yourfile.py")

import os
os.system("python yourfile.py")

उदाहरण 6, python startuphook piggybacking के माध्यम से अपनी फ़ाइल आयात करें:

देखें: https://docs.python.org/2/library/user.html

इस कोड को अपनी होम निर्देशिका में ~/.pythonrc.py

class secretclass:
    def secretmessage(cls, myarg):
        return myarg + " is if.. up in the sky, the sky"
    secretmessage = classmethod( secretmessage )

    def skycake(cls):
        return "cookie and sky pie people can't go up and "
    skycake = classmethod( skycake )

इस कोड को अपने main.py में रखें (कहीं भी हो सकता है):

import user
msg = "The only way skycake tates good" 
msg = user.secretclass.secretmessage(msg)
msg += user.secretclass.skycake()
print(msg + " have the sky pie! SKYCAKE!")

चलाओ:

$ python main.py
The only way skycake tates good is if.. up in the sky, 
the skycookie and sky pie people can't go up and  have the sky pie! 
SKYCAKE!

इस जिस्ट के लिए क्रेडिट इस पर जाता है: https://github.com/docwhat/homedir-examples/blob/master/python-commandline/.pythonrc.py अपनी अप-नौकाओं के साथ भेजें।

उदाहरण 7, सबसे मजबूत: नंगे आयात कमांड के साथ पायथन में फ़ाइलें आयात करें:

  1. एक नई निर्देशिका /home/el/foo5/
  2. एक नई निर्देशिका /home/el/foo5/herp
  3. हर्प के तहत __init__.py नाम की एक खाली फ़ाइल बनाएं:

    [email protected]:/home/el/foo5/herp$ touch __init__.py
    [email protected]:/home/el/foo5/herp$ ls
    __init__.py
    
  4. एक नई निर्देशिका / घर / एल / foo5 / herp / derp बनाओ

  5. डरप के तहत, एक और __init__.py फ़ाइल बनाएं:

    [email protected]:/home/el/foo5/herp/derp$ touch __init__.py
    [email protected]:/home/el/foo5/herp/derp$ ls
    __init__.py
    
  6. नीचे / home / el / foo5 / herp / yolo.py नामक एक नई फ़ाइल yolo.py इसे yolo.py रखें:

    def skycake():
      print "SkyCake evolves to stay just beyond the cognitive reach of " +
      "the bulk of men. SKYCAKE!!"
    
  7. सच्चाई का क्षण, नई फ़ाइल /home/el/foo5/main.py , इसे वहां रखें;

    from herp.derp.yolo import skycake
    skycake()
    
  8. चलाओ:

    [email protected]:/home/el/foo5$ python main.py
    SkyCake evolves to stay just beyond the cognitive reach of the bulk 
    of men. SKYCAKE!!
    

    खाली __init__.py फ़ाइल पाइथन दुभाषिया से संचार करती है कि डेवलपर इस निर्देशिका को एक आयात करने योग्य पैकेज होने का इरादा रखता है।

यदि आप निर्देशिका के अंतर्गत सभी .py फ़ाइलों को शामिल करने के तरीके पर अपनी पोस्ट देखना चाहते हैं तो यहां देखें: https://stackoverflow.com/a/20753073/445131

बोनस प्रोटिप

चाहे आप मैक, लिनक्स या विंडोज का उपयोग कर रहे हों, आपको यहां वर्णित पाइथन के निष्क्रिय संपादक का उपयोग करने की आवश्यकता है। यह आपके अजगर की दुनिया को अनलॉक कर देगा। http://www.youtube.com/watch?v=DkW5CSZ_VII

मैं पायथन में अन्य फाइलें कैसे आयात करूं?

  1. मैं एक विशिष्ट पायथन फ़ाइल आयात कैसे कर सकता हूं जैसे import file.py ?
  2. मैं एक विशिष्ट फ़ाइल के बजाय फ़ोल्डर कैसे आयात कर सकता हूं?
  3. मैं उपयोगकर्ता इनपुट के आधार पर रनटाइम पर गतिशील रूप से एक पायथन फ़ाइल लोड करना चाहता हूं।
  4. मैं जानना चाहता हूं कि फ़ाइल से केवल एक विशिष्ट भाग कैसे लोड करें।

उदाहरण के लिए, main.py मेरे पास है:

from extra import * 

हालांकि यह मुझे extra.py में सभी परिभाषा देता है जब शायद मैं चाहता हूं कि एक ही परिभाषा है:

def gap():
    print
    print

अतिरिक्त. extra.py से gap प्राप्त करने के लिए मैं import विवरण में क्या extra.py ?


.py फ़ाइलों को आयात करने का सबसे अच्छा तरीका __init__.py माध्यम से है। करने के लिए सबसे आसान बात यह है कि एक ही निर्देशिका में __init__.py नाम की एक खाली फ़ाइल बनाना है जो आपकी.py फ़ाइल स्थित है।

माइक ग्रौची द्वारा यह post __init__.py का एक बड़ा स्पष्टीकरण है और इसे पायथन पैकेज बनाने, आयात करने और स्थापित करने के लिए उपयोग किया जाता है।


एक ज्ञात नाम के साथ 'रनटाइम' पर एक विशिष्ट पायथन फ़ाइल आयात करने के लिए:

import os
import sys

...

scriptpath = "../Test/MyModule.py"

# Add the directory containing your module to the Python path (wants absolute paths)
sys.path.append(os.path.abspath(scriptpath))

# Do the import
import MyModule

बस एक और पायथन फ़ाइल में पायथन फ़ाइल आयात करने के लिए

मान लें कि मेरे पास helper.py पायथन फ़ाइल है जिसमें एक प्रदर्शन फ़ंक्शन है,

def display():
    print("I'm working sundar gsv")

अब app.py में , आप प्रदर्शन फ़ंक्शन का उपयोग कर सकते हैं,

import helper
helper.display()

उत्पादन,

I'm working sundar gsv

नोट: .py एक्सटेंशन निर्दिष्ट करने की कोई आवश्यकता नहीं है।


मैं यह नोट जोड़ना चाहता हूं कि मैं कहीं और स्पष्ट रूप से नहीं हूं; मॉड्यूल / पैकेज के अंदर, फ़ाइलों से लोड करते समय, मॉड्यूल / पैकेज नाम mymodule साथ prefixed किया जाना चाहिए। कल्पना करें कि mymodule इस तरह लेआउट है:

/main.py
/mymodule
    /__init__.py
    /somefile.py
    /otherstuff.py

__init__.py से somefile.py / otherstuff.py लोड करते समय सामग्री इस तरह otherstuff.py चाहिए:

from mymodule.somefile import somefunc
from mymodule.otherstuff import otherfunc

आयात दस्तावेज़ ..

__init__.py फ़ाइलों को पाइथन को निर्देशिका वाले संकुल के रूप में उपयोग करने की आवश्यकता होती है, यह मॉड्यूल खोज पथ पर बाद में होने वाले वैध मॉड्यूल को अनजाने में छिपाने वाले स्ट्रिंग से सामान्य नाम वाले निर्देशिकाओं को रोकने के लिए किया जाता है।

__init__.py बस एक खाली फ़ाइल हो सकती है, लेकिन यह पैकेज के लिए प्रारंभिक कोड निष्पादित कर सकती है या __all__ चर सेट कर __all__ है।

mydir/spam/__init__.py
mydir/spam/module.py
import spam.module
or
from spam import module

from file import function_name  ######## Importing specific function
function_name()                 ######## Calling function

तथा

import file              ######## Importing whole package
file.function1_name()    ######## Calling function
file.function2_name()    ######## Calling function

यहां दो सरल तरीके हैं जिन्हें मैंने अभी समझा है और सुनिश्चित करें कि आपकी "file.py" फ़ाइल जिसे आप लाइब्रेरी के रूप में आयात करना चाहते हैं, केवल आपकी वर्तमान निर्देशिका में मौजूद है।







python-import