2013-08-27 8 views
0

를 PYTHONPATH하기 : \ path-to-PA \ PROJECTA; C : \ path-to-PB \ PROJECTB;추가 두 개 이상의 파이썬 프로젝트 경로는 내가 작업 공간에 두 개의 프로젝트를

나는 PROJECTA &에 대한 디렉토리 구조 PROJECTB

PROJECTA 
    com 
     example 
      sample 
       projAAA 
        srcfiles 
        testcasefiles 


PROJECTB 
    com 
     example 
      sample 
       projBBB 
        srcfiles 
        testcasefiles 

내가 PROJECTB에 testcasefiles 디렉토리에서 srcfiles 디렉토리에서 파일을 가져 트링하고 다음 한

from com.example.sample.projectBBB.srcfiles import pythonfile.py 
파이썬은 예외를 던지고있다

:

ImportError : projectBBB.srcfiles 모듈이 없습니다.

환경 변수의 PYTHONPATH에서 PROJECTA 경로를 제거하면이 오류가 발생하지 않습니다.

여러 프로젝트 경로를 추가 할 수있는이 문제를 해결하는 방법.

답변

1

글쎄, 파이썬은 항상 모듈 "com"으로 "com"(여기 PROJECTA에서)의 첫 번째 발생을 취하고 그 안에 뭔가를 찾을 수 없다면 "com"의 다른 경우도 찾지 않습니다. 파이썬은 모듈을 "병합"하지 않습니다. 모듈을 임의적으로 일반적이고 복잡하게 만들 수 있기 때문에 생각하면됩니다.

용액 A

PYTHONPATH 프로젝트 상기 디렉토리에 포함하고, 예를 들어 같은 접두사와 모듈 어드레스 (정상) 이 :

from PROJECTA import com as comA 
from PROJECTB import com as comB 
from comA.example.sample.projectBBB.srcfiles import pythonfile.py 

Btw. 우리는 당신이 __init__.py 파일을 가져야한다고 암묵적으로 가정합니다 (즉, 모듈로 취급되어야하는 모든 디렉토리에서).

MODULE_MERGE 
    com 
     example 
      sample 

편집 MODULE_MERGE/com/example/sample/__init__.py 다음 이전 경우와 프로젝트 위의 디렉토리하지만이 같은 디렉토리 구조를 만들

가 PYTHONPATH에 포함

솔루션 B (이상한) 이 파일을 포함하는 파일 :

from comA.example.sample import projAAA 
from comB.example.sample import projBBB 

그리고 이제 행복하게 MODULE_MERGE을 귀하의 주소에 포함하십시오. PYTHONPATH

문제는 그러한 일을하는 것이 합리적인지 여부입니다. 나는 그렇게 생각하지 않는다. 파이썬 프로젝트는 독립적이어야하며 대개 중첩 된 네임 스페이스가 없습니다.