2013-07-14 6 views
0

2 개의 스크립트가 있습니다.Python - 다른 모듈에서 함수를 사용하는 방법은 무엇입니까?

Main.py 
Update.py 

나는 기본적으로 다음과 같은 작업을 수행 Main.py의 기능이 있습니다

def log(message): 
    print(message) 
    os.system("echo " + message + " >> /logfile.txt") 

을 그리고 Update.py 파일에 나는 기본적으로 업데이트를 수행하는 하나의 기능을 가지고있다. 그러나 업데이트 기능을 통해, 그 시점에 메시지가 무엇이든 "log (message)"를 호출합니다.

지금 생각 나는 나가서 설명하자면 NameError납니다되는 문제 : 나는 Main.py 스크립트의 외부 기능을 사용하려고 할 때마다 전역 이름은 정의되지 않은 "로그".

어떤 도움이 필요합니까? 어떻게하면 '로그'기능을 사용할 수 있을까요?

* 설명을 간소화 한 코드입니다.

편집 :

Main.py imports Update from /Scripts/Update.py 
Update.py imports log from Main.py 

나는이 시도하면 그냥 Update.py에 줄을 추가

+0

Where is Main.py? – user2357112

+0

루트 디렉토리. 그런 다음/Scripts/폴더에 Update.py 스크립트가 있습니다. – Skowt

답변

3

logMain에서 가져 오지 마십시오. Main.py에서 코드를 다시 실행합니다. 왜냐하면 Main.py를 스크립트로 실행하고 모듈로 가져 오기가 동등하지 않기 때문입니다. 다른 모듈은 주 스크립트에 정의 된 함수에 의존해서는 안됩니다. 대신 log 함수를 다른 모듈에 넣고 가져 오거나, Main.py가 명시 적으로 다른 모듈에 로거를 전달하게하십시오.

업데이트 : Update을 가져올 수 없습니다. 파이썬에서 찾을 수 없으므로 Update을 가져올 수 없습니다. 4 places 파이썬 검사 모듈을 수입 할 수 있지만, 사람은 당신이

  • 스크립트에서였다 디렉토리 및
  • PYTHONPATH 환경 변수에 지정된 디렉토리에 있습니다에 관심이 있어야합니다.

메인을 입력해야합니다.py 및 동일한 디렉토리에서 가져 오는 항목을 추가하거나 PYTHONPATH/Scripts을 추가하십시오.

1

을 "이름 업데이트를 가져올 수 없습니다"라는 실패

from Main import log 

Update.py에서 log()으로 전화를 걸 수 있습니다.

from Main import log 

또는 최고 : 서로를 가져 오는 모듈의 경우

import Main 
Main.log() 

How can I have modules that mutually import each other를 참조

+0

그건 가져 오기 구문이 작동하는 방식이 아닙니다. – user2357112

+0

작전, 오타 수정;) – user2304916

+0

위의 대답을 읽으십시오. 그것은 작동하지 않았다 :? – Skowt

1

당신은 기능을 가져와야합니다.

+0

그것을 시도했다. 그것은 이상한 실수를합니다. 기본적으로. 내 메인 스크립트에서 업데이트 기능을 가져 오는 경우. 그런 다음 업데이트 스크립트에서 로그 함수를 가져 오십시오. 업데이트 기능을 가져 오기 위해 이상한주기와 오류가 발생합니다. – Skowt

+0

업데이트 됨. 링크를 확인하고 참조하십시오. @ Skowt – zhangyangyu

관련 문제