2011-04-08 5 views
8

저는 여기 뭔가 바보 일 가능성이 높습니다. 그러나 그것은 나를 미치게합니다.PyDev의 종속 프로젝트에서 모듈을 가져올 수 없습니다.

Eclipse에서 두 개의 PyDev 프로젝트가 있습니다. 하나의 프로젝트 인 '분석'은 다른 'PyCommon'에 의존합니다. 나는 Analysis를위한 프로젝트 레퍼런스를 볼 때 PyCommon이 체크되고, PyCommon의 엘리먼트를 Analysis에서 참조 할 때 자동 import/code completion이 작동하는 것처럼 100 % 확실하다.

Analysis에서 모듈을 작성/실행하려고합니다. 모듈은 fhb/analysis/log_parsers.py입니다.

PyCommon 프로젝트의 fhb/pycommon/types/order_status에서 OrderStatus 요소를 가져 오려고합니다. 그래서, 내 import 문은 import 문이 quickfix 보정에를 PyDev에 의해 자동으로 작성 되었기 때문에이 곳

PyDev의 'fhb.pycommon.types.order_status 수입 OrderStatus에서'

명확하게 알고있다. 내가 log_parsers.py의 주요 기능을 실행하려고하면 그럼에도 불구하고,이 얻을 :

Traceback (most recent call last): File "/workspace/Analysis/src/fhb/analysis/log_parsers.py", line 6, in from fhb.pycommon.types.order_type import OrderType ImportError: No module named pycommon.types.order_status

이 모든 패키지는 각 프로젝트에 적절한 소스 폴더 ('SRC')을 받고있다.

Analysis는 절대적으로 PyCommon을 참조하도록 설정되었지만 Analysis의 속성에서 PyDev-PYTHONPATH를 보면 Analysis의 자체 src 폴더 만 'Source Folder'탭 아래에 표시됩니다. '소스 폴더 추가'를 클릭하십시오.

답변

0

PyCommon의 경로를 PYTHONPATH에 추가해야합니다. 그렇지 않으면 가져올 실제 모듈을 찾을 수 없습니다.

...

import sys 
print('\n'.join(sorted(sys.path))) 

를 프로그램의 항목에 PYTHONPATH가 제대로 예상대로 설정되어 있는지 참조 :

3

문제가 자리하고있는 곳 확인하는 가장 좋은 방법은 퍼팅입니다 : Importing from another project in pydev 구조가 어떻게 보이는지에 대한 자세한 내용은 (최악의 경우 이미 구성되어있는 경우 PyDev 캐시 버그 일 수 있습니다.이 경우 Eclipse를 다시 시작하면 문제가 해결됩니다. 그렇지 않으면 구성이 잘못되었을 수 있습니다).

+0

Eclipse를 다시 시작하면이 문제가 해결되었습니다. 감사합니다! – dimo414

2

pydev는 패키지 이름 "fhb"의 루트 근처에서 유사한 패키지 이름에 문제가 있다고 생각합니다. 나는 똑같은 문제를 겪고있다. 프로젝트 중 하나에서 패키지를 제거하면 문제없이 다른 하나를 참조 할 수 있습니다.

나는이 문제를 해결할 수 없지만, 패키지의 루트 폴더와 같아야한다고 생각한다.

+0

이것은 나에게도 문제가되었지만 고마워.하지만 내게는 전혀 이해가 가지 않는다 ... 나는 기본 패키지가 모든 곳에서 동일하게되기를 원하는 여러 프로젝트와 함께 작업한다. . 그 후 운이 좋았 니? –

0

일부 모듈 폴더에서 __init__.py가 누락되어 문제가 발생할 수 있습니다.

예를 들어, fhb.pycommon.types.order_status의 order_status.py에서 OrderStatus를 사용하려면 fhb, fhb/pycommon 및 fhb/pycommon/types에 __init__.py 파일이 있어야합니다. .

또한 pylint가 fhb/analysis/log_parsers.py에서 올바르게 작동하려면 fhb/분석에서도 __init__.py가 필요합니다.

관련 문제