2014-04-10 3 views
0

다음과 같은 문제가 있습니다.Python에서 가져 오는 방법

main.py :

import general_functions 
... 

def main(argv): 
    make()       # line 98 
    bake() 

if __name__ == "__main__": 
    sys.exit(main(sys.argv[1:])) # line 120 

general_functions.py :

def make(what):... 

def bake(how):... 

tcs_main.py :

import general_functions 
... 

class baking(object): 
    def __init__(self, ...): 
     muffin = 'chocolate muffin' 
     make(muffin) 
     bake(200) 

내가이 실행 내 프로젝트에서 나는 아래의 파일이 ./main.py

i :

Traceback (most recent call last): 
    File "./main.py", line xxx, in <module> 
    sys.exit(main(sys.argv[1:])) 
    File "./main.py", line 98, in main 
    make(muffin) 
NameError: global name 'make' is not defined 

사실 general_functions.py에서 main.py와 tcs_main.py에서 사용할 수있는 일반 함수를 갖고 싶습니다.

여기서 내가 뭘 잘못하고 있니?

어떻게 가져 오기를 파이썬으로 가져 왔습니까? 나는 그것이 (파이썬에서) 다시 임포트 할 필요가 없다는 것을 import했다면, main.py에서 모든 것을 import 할 수 있고 다른 프로젝트 파일에서도 사용할 수 있다는 것을 읽는가?

감사합니다.

+0

네임 스페이스에 대해 더 자세히 설명해 드리겠습니다. http://stackoverflow.com/questions/22408302/why-cant-pythons-import-work-like-cs-include/22408375#22408375 – bosnjak

+0

"읽었습니다. 다시 가져올 필요가없는 항목을 가져 오는 경우 main.py에서 모든 항목을 가져올 수 있으며 다른 프로젝트 파일에서도 사용할 수 있다는 의미입니까? 아니요, 필요로하는 모든 파일에서 사용할 모듈이나 함수를 가져와야합니다. 모듈 자체는 일단 읽어 와서'sys.modules'에 일단 저장하면 _read_되고, 프로그램의 수명 동안 다른 모든 임포트는 디스크에서 다시 읽지 않고 저장된 모듈을 참조합니다. –

+0

시간과 정성을 다해 주셔서 감사합니다! – FotisK

답변

1

general_functions 모듈을 가져오고 있지만 그 시점에서 main.py은 해당 내용을 알지 못하거나 더 잘 말해서 해당 내용을 main 모듈에로드하지 않습니다. 당신은 할 수 :

from general_functions import make, bake

또는 (내 의견으로는, 더 나은 연습) :

import general_functions 
... 

class baking(object): 
    def __init__(self, ...): 
     muffin = 'chocolate muffin' 
     general_functions.make(muffin) 
     general_functions.bake(200) 

당신은이 위대한 스레드를 확인할 수 있습니다 방법 import 파이썬에서 작품이 다른 사람에 대한 How does Python importing exactly work?를 : Local import statements in Python에 대한 수입 범위.

0

모듈의 내용이 아닌 모듈 만 가져 왔습니다. 괜찮습니다. 을 main 모듈의 general_functions.make()으로 참조해야합니다.

관련 문제