2013-08-31 4 views
1

간헐적으로이 문제가 발생하는 것 같습니다.최상위 모듈 (원본 폴더)이 포함 된 내 import 문을 시작할 수 없습니다.

때로는 최상위 폴더의 이름으로 가져 오기를 시작하려고하면 컴파일 오류가 발생하는 PyDev 프로젝트가 있습니다. 그래서, 내 프로젝트는 다음과 같습니다한다고 가정

+ myproject 
    - __init__.py 
    - a.py 
    - b.py 
    + package1 
     - c.py 
     - __init__.py 
    + package2 
     - d.py 
     - e.py 
     - __init__.py 

내가 파일 a.py에있어 경우, 그것은 나를 예를 들어이 같은 수입 할 수 있도록하지 않습니다

from myproject.b import foo 
import myproject.b 

이 같은 간다를 모든 파일에 대해. 그들은 모두이 같은 수입 문에서 "myproject라는"를 생략 할 경우 잘 컴파일 :

그냥 그림처럼
from b import foo 
import b 

, 나는 확실히 최상위 __init__.py가 있고, myproject라는 폴더와 그 모두 부모는 파이썬 경로에 있습니다. myproject 폴더는 프로젝트의 원본 폴더이기도합니다.

이 코드를 배포 할 곳의 경로에 myproject 폴더가 없으므로 전체 import 문이 필요합니다. 같은 방식으로 구성되는 것으로 보이는 다른 프로젝트에서는이 문제가 발생하지 않으며 일반적인 정리/재시작을 시도했습니다.

여기에 무슨 일이 벌어지고 있는지 궁금하십니까?

감사합니다.

+1

장소 경우

그래서, 나의 새로운 문제는 약간 다른, 그래서 여기에 다른 질문을 게시했습니다 import myproject.b'가 실패합니다. – BrenBarn

+0

정말 컴파일 오류가 발생합니까? 파이썬은 참조하는 모듈이 컴파일시에 존재하는지 또는 존재하지 않는지 상관하지 않으며, 실행하기 전까지는 코드를 컴파일하지 않습니다. ImportError 인 경우 컴파일 오류가 아닙니다. – user2357112

+0

그래, 내가 잘못 했어. 그것은'ImportError'입니다. – piyo

답변

1

상대 수입을 시도 했습니까 (from .b import foo, from . import b)? 나는 왜 절대 수입 ("myproject"포함)이 당신의 경우에는 효과가 없지만 상대적 수입은 여전히 ​​효과가 있어야한다는 것을 이해하지 못한다.

+0

상대적인 가져 오기가 허용되지 않습니다. – piyo

+0

왜? 그들은 2.5 년 이래로 주변에 있었고 PEP8도 받아 들일 만하다고 생각합니다. – antony

+0

내 사무실의 사람들이 좋아하지 않습니다. – piyo

1

조금 뒤죽박죽이어서 PyDev가 파이썬 경로에있는 패키지로 import 문을 시작하지 못하는 것으로 나타났습니다. 내 프로젝트 폴더에서 소스 폴더 지정을 제거하면 가져 오기가 제대로 작동하지만 물론 PyDev의 일부 기능이 손실됩니다. `당신이 그들의 경로에 myproject라는 폴더가하지하는 코드를 deply

https://stackoverflow.com/questions/18613944/how-should-i-structure-my-pydev-git-project