파이썬 파일을 가져 오는 방법에는 여러 가지가 있으며 모두 장단점이 있습니다.
자신에게 적합한 첫 번째 가져 오기 전략을 서둘러 선택하지 마십시오. 그렇지 않으면 나중에 필요에 맞지 않을 때 코드베이스를 다시 작성해야합니다.
가장 쉬운 예 # 1을 설명하고 가장 전문적이고 강력한 예 # 7로 넘어가겠습니다.
예제 1, 파이썬 인터프리터로 파이썬 모듈 가져 오기 :
이것을 /home/el/foo/fox.py에 넣으십시오.
def what_does_the_fox_say():
print("vixens cry")
파이썬 인터프리터에 들어가십시오.
el@apollo:/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
>>>
python 인터프리터를 통해 fox를 가져 what_does_the_fox_say()
오고 fox.py 내 에서 python 함수 를 호출했습니다.
예제 2, 스크립트 에서execfile
또는 ( exec
Python 3 )를 사용 하여 다른 파이썬 파일을 제 위치에서 실행하십시오.
이것을 /home/el/foo2/mylib.py에 넣으십시오.
def moobar():
print("hi")
이것을 /home/el/foo2/main.py에 넣으십시오.
execfile("/home/el/foo2/mylib.py")
moobar()
파일을 실행하십시오.
el@apollo:/home/el/foo$ python main.py
hi
함수 moobar는 mylib.py에서 가져와 main.py에서 사용할 수있게되었습니다.
예제 3, ...에서 가져 오기 ... 기능 :
이것을 /home/el/foo3/chekov.py에 넣으십시오.
def question():
print "where are the nuclear wessels?"
이것을 /home/el/foo3/main.py에 넣으십시오.
from chekov import question
question()
다음과 같이 실행하십시오.
el@apollo:/home/el/foo3$ python main.py
where are the nuclear wessels?
chekov.py에서 다른 기능을 정의한 경우, 다른 기능을 사용하지 않으면 사용할 수 없습니다 import *
예 4, riaa.py를 가져 오는 위치와 다른 파일 위치에있는 경우 가져 오기
이것을 /home/el/foo4/stuff/riaa.py에 넣으십시오.
def watchout():
print "computers are transforming into a noose and a yoke for humans"
이것을 /home/el/foo4/main.py에 넣으십시오.
import sys
import os
sys.path.append(os.path.abspath("/home/el/foo4/stuff"))
from riaa import *
watchout()
그것을 실행 :
el@apollo:/home/el/foo4$ python main.py
computers are transforming into a noose and a yoke for humans
외부 파일의 모든 것을 다른 디렉토리에서 가져옵니다.
예 5, 사용 os.system("python yourfile.py")
import os
os.system("python yourfile.py")
예제 6, python startuphook 피기 백을 통해 파일을 가져옵니다.
업데이트 : 이 예제는 python2와 3 모두에서 작동했지만 python2에서만 작동합니다. python3은이 사용자 startuphook 기능 세트를 제거했습니다.이 기능은 기술이 부족한 python 라이브러리 작성자에 의해 악용되어 모든 사용자 정의 프로그램 이전에 코드를 전역 네임 스페이스에 무례하게 삽입하는 데 사용되었습니다. 이것이 python3에서 작동하려면 더 창의력을 가져야합니다. 내가 그것을하는 방법을 알려 주면, 파이썬 개발자는 그 기능 세트도 비활성화 할 것이므로 스스로해야합니다.
참조 : 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!
여기에 오류가 발생 ModuleNotFoundError: No module named 'user'
하면 python3을 사용한다는 의미이며 기본적으로 startuphooks가 비활성화되어 있습니다.
이 jist의 크레딧은 https://github.com/docwhat/homedir-examples/blob/master/python-commandline/.pythonrc.py 입니다. 보트를 따라 보내십시오.
예제 7, 가장 강력한 방법 : bare import 명령을 사용하여 파이썬으로 파일을 가져옵니다.
- 새 디렉토리를 만드십시오
/home/el/foo5/
- 새 디렉토리를 만드십시오
/home/el/foo5/herp
__init__.py
herp 아래에 빈 파일을 만듭니다 .
el@apollo:/home/el/foo5/herp$ touch __init__.py
el@apollo:/home/el/foo5/herp$ ls
__init__.py
/ home / el / foo5 / herp / derp 디렉토리를 새로 만드십시오
derp에서 다른 __init__.py
파일을 만듭니다 .
el@apollo:/home/el/foo5/herp/derp$ touch __init__.py
el@apollo:/home/el/foo5/herp/derp$ ls
__init__.py
/ home / el / foo5 / herp / derp 아래에 yolo.py
Put this 라는 새 파일을 작성하십시오 .
def skycake():
print "SkyCake evolves to stay just beyond the cognitive reach of " +
"the bulk of men. SKYCAKE!!"
진실의 순간, 새 파일을 만들고, /home/el/foo5/main.py
거기에 넣으 십시오 .
from herp.derp.yolo import skycake
skycake()
그것을 실행 :
el@apollo:/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을 참조하십시오.