2010-08-07 3 views
2

나는 GAE 용 파이썬 애플리케이션을 개발 중이다.파이썬으로 함수를 임포트하는 방법

응용 프로그램은 현재 모든 파일이 동일한 파일 인 main.py에있는 여러 클래스와 함수로 구성됩니다.

응용 프로그램이 문제없이 실행 중입니다.

이제 애플리케이션을 리팩토링하고 모든 클래스를 아웃소싱하려고합니다. 모든 수업은 자신의 파일에 있어야합니다. 파일은 같은 디렉토리에 배치한다

main.py 
/directory1/class1.py 
/directory1/class2.py 
/directory2/class1.py 

내 문제는 이러한 아웃소싱 클래스 안에, 내가 main.py.의 기능을 사용할 수 없다는 것입니다

나는 이것을 클래스 파일 내부에서 시도했다.

from main import name_of_function 

그러나 컴파일러는

from main import name_of_function 
ImportError: cannot import name name_of_function 

내가 무엇이 잘못했다라고?

funktion의 이름은 로그인입니다. 어쩌면 이것이 문제의 원인일까요?

+1

http://docs.python.org/tutorial/modules.html#packages –

+0

안녕하세요, 저는이 설명서를 알고 있습니다. 그러나 그것은 문제를 해결하는 데 도움이되지 못했습니다. Eclipse를 Pydev와 함께 사용하고 오류가 표시되지 않습니다. – Neverland

답변

0

때로는 같은 모듈에 속한 클래스를 목적에 구애받지 않고 따로 분리하여 두는 것이 좋습니다.

main에서 함수를 사용하는 문제는 한 모듈이 해당 함수에서 common_utils.py를 리팩토링하고 main과 분리해야한다는 것을 나타내는 기호입니다. 모듈을 사용하는 모듈로 가져올 수 있습니다. 클래스가 전체 유스 케이스만을 생각한다고 생각하지 마십시오.

프로그램 논리의 의사 코드를 제공 할 수 있다면 리팩토링을 함께 더 잘 확인할 수 있습니다.

+0

의사 코드는 LOC가 8000을 넘기 때문에 쉽지 않습니다. (working) 코드는 다음과 같습니다. http://code.google.com/p/koalacloud/source/browse/ 리팩터링을 시도하고 클래스를 아웃소싱하기 전입니다. – Neverland

2

추가 기능을 main.py에서 별도의 파일로 이동해보십시오.

main.py 
library.py # contains login() and other functions from main 
/directory1/class1.py 
/directory1/class2.py 
/directory2/class1.py 
+0

일부 기능을 main.py에서 library.py로 아웃소싱하려고했습니다. 또한 main.py에서 library.py로 가져온 ... import ... 문을이 함수에 복사했습니다. main.py 내부 나는 ... 라이브러리 수입 login3 에서 라이브러리 수입 login2 에서 라이브러리 수입 Login1을 에서 을 삽입하지만 지금은 내가 전에 문제를 만든 적이 패키지에서 ImportErrors을 얻는 문제가있다. 이것은 main.py와 library.py에서 import ... 같은 것을 사용하기 때문입니다. – Neverland

관련 문제