2013-04-27 3 views
2

내가 파이썬 프로젝트 이름 인 MyModule 작업, 그리고하고 가정하자 나는 다음과 같은 디렉토리 구조를 가지고 개발하는 동안파이썬 모듈 경로

mymodule/ 
    README 
    setup.py 
    mymodule/ 
     __init__.py 
     foo.py 
     bar.py 

내가 일반적으로 내부 mymodule 폴더에서 작업을 그 안에있는 모든 소스 파일들. 내가 foo 작업 및 bar에서 무언가를 가져 싶었다 경우이의 때문에, 나는 같은 것을 할 것입니다 :

from bar import myfunction 

모든 개발 과정에서 잘 작동합니다. 내 모듈을 배포하려고 할 때 문제가 발생합니다.

from mymodule.bar import myfunction 

내가이 형식을 사용하는 mymodule 내 수입의 전부를 변경할 수 있습니다 : 내가 일하고 있어요 다른 프로젝트에 모듈을 설치하는 경우 모듈 대신 다음과 같이 가져올 필요가 있기 때문에, 내 코드는 더 이상 작동하지 않습니다 그러나 이것은 모듈이 개발 과정에서 더 이상 작동하지 않는다는 것을 의미합니다. 배포 용 코드를 수정하면 개발을 위해 중단하고 그 반대의 경우도 마찬가지입니다.

내가 뭘 잘못하고 있니?

+0

경로가 어디에서나 동일합니까? 네가 가진 것처럼 들리 네. ' 한 곳에서 경로의 일부로, 다른 한 곳에서는 그렇지 않습니다. – mlissner

+0

예, 경로는 동일합니다. 물론 모듈 코드에서 파이썬 경로 속임수를 할 수 있기 때문에 작동 할 수 있지만 해킹 인 것 같습니다. 더 좋은 방법이있을 것이라고 확신합니다. 컨벤션이 무엇인지 모릅니다. –

답변

0

이것이 가장 깨끗한 방법인지 확실하지 않지만 모든 가져 오기 앞에 mymodule. 접두사를 붙입니다. 로컬에서 개발해야하는 경우 루트 디렉터리에 pip install .을 실행하기 만하면됩니다. 변경을하면 제거하고 다시 설치해야하지만 적어도 작동합니다. 내가이 일을하지 못하게하는 PATH 속임수가 있다고 확신한다.

희망이 있습니다.