필자가 작성한 프로그램을 구성하는 스크립트가 점점 늘어나고 있으며, 내 소스 트리를 정리하고 올바르게 패키지화해야한다고 결정했습니다. 나는 이것이 간단한 질문이지만 그것을하는 법을 알 수 없다고 확신한다."within"모듈 패키지
모듈 그룹이 있는데 그 모듈은 함께 맞지만 하나는 최상위 모듈이어야하고 다른 모듈 이름 앞에 모듈 이름이 있지만 실제로는 하위 패키지에 들어가야합니다. 어떻게해야합니까?
예를 들어, import mystuff
수 있기를 원한다고 모든 mystuff 얻을. 하지만 나는 또한 import mystuff.test.test1
수 있어야합니다. 나는이 같은
myprogram/
mystuff.py
mystuff/
__init__.py
tests/
__init__.py
test1.py
test2.py
...
을 소스 트리를 만들 것이라고 생각하지만 (한 mystuff/
의 __init__.py
가 비어로) 그래서 import mystuff
는 아무것도하지 않는다,이 경우, 항상 mystuff/
보인다 mystuff.py
보다 우선합니다.
원하는 동작을 얻으려면 올바른 방법은 무엇입니까? 아니면 이것이 가능하지 않으며 mystuff.py
을 mystuff/
으로 이동해야하며 mystuff.mystuff
(불필요한 반복 인 것처럼 보임)로 액세스해야합니다.
죄송합니다. 나는 이것이 어딘가에 문서화되어야한다고 생각하지만 어딘가 어디 있는지 찾을 수 없다.
업데이트. 나는 이그나시오의 방법이 정확한 것이라고 생각하지만 나는 그것을 정말로 좋아하지 않는다! 내 편집기에서 여러 파일을 열고 있는데 모두 __init__.py
이라면 이상 할 수 있습니다. 그래서 저는 제 구조를 그대로두고, mystuff.py
을 mystuff/__init__.py
에 연결하기로 결정했습니다. 왜 내가이 일을해서는 안되는 지에 대한 의견이 있으면 누구든 듣고 싶습니다.
실제로는 결국 tar.gz
을 만들 때 distutils의 심볼릭 링크를 역 참조하는 방법을 찾을 수 없기 때문에 다른 방법으로 연결하고 있습니다. 결과적으로 링크가 끊어졌습니다. 이 방법은 동일한 효과를 가지고 행복하게 유지합니다.
예. Ignatio의 응답이 정확한 것이기 때문에 그렇게해서는 안됩니다. – cwallenpoole
@cwallenpoole.동의하지만, 하루가 끝날 때 내가 가지고있는 방법은 정확히 똑같은 효과가 있습니다. 심지어'sdist' 출력은 내 링크가없는 Ignacio의 출력과 정확히 같을 것입니다. 그래서 그것은 개발하는 동안 나를 쉽게 해줍니다. 왜 이것이 나쁜 일인가하는 다른 이유가 있습니까? – tjm