내 Django 프로젝트에서 profile
이라는 응용 프로그램을 가지고 있는데 대부분 개체에 대한 추가 정보 (장고 사용자에게 익숙해 보일 수 있음)에 대한 내 profile.models.UserProfile
클래스가 들어 있습니다. 이제 profile/__init__.py
(일부 신호)에 초기화 코드를 넣었고 문제가 발생했습니다. Django는 hotshot_profile
이라는 테이블을 찾지 못했음을 알려줍니다.파이썬 모듈 시스템 내에서 이름 충돌을 피하는 방법은 무엇입니까?
문자 그대로 검색을 한 후에 문제를 가져 오기 순서로 추적했습니다. 나는 다음과 같은 발견했습니다 python -v manage.py test
실행 :
import nose.plugins.prof # precompiled from /home/rassie/.virtualenvs/myproject/lib/python2.6/site-packages/nose/plugins/prof.pyc
import hotshot # directory /usr/lib64/python2.6/hotshot
import hotshot # precompiled from /usr/lib64/python2.6/hotshot/__init__.pyc
dlopen("/home/rassie/.virtualenvs/myproject/lib64/python2.6/lib-dynload/_hotshot.so", 2);
import _hotshot # dynamically loaded from /home/rassie/.virtualenvs/myproject/lib64/python2.6/lib-dynload/_hotshot.so
import hotshot.stats # from /usr/lib64/python2.6/hotshot/stats.py
import profile # directory /home/rassie/MyProject/apps/profile
import profile # precompiled from /home/rassie/MyProject/apps/profile/__init__.pyc
그래서 내 코 러너 (이 플러그인이 꺼져 있더라도)에 nose.plugins.prof
수입, profile
을 수입하려고 수입 hotshot
는. 그러나 profile
은 프로젝트에서으로 가져 오지만 준비는 시스템 파이썬에서 가져와야합니다.
분명히 내 profile
모듈이 시스템 profile
모듈과 충돌합니다. 분명히 내 자신의 프로그래밍에서 파이썬 번들로 제공되는 모든 모듈 이름을 제외 할 수 없습니다. 그래서 질문은, 내가 여기서 어디로 가야합니까? 모든 앱에 대해 myproject
네임 스페이스를 만들어야합니까? 장고는 그것으로 작업 할 것인가?
PS : 테이블의 이름 hotshot_profile
나는 또한 내 프로젝트에 사용하고 pybb
에서 Profile
클래스에 추가 아직 - 투 - 완전 분석 명명 충돌에서 오는 것 같다. 하지만이 질문의 범위 밖입니다.
나는 항상 내가 장고에 대한 모든 조언을 따라 절대 수입을 사용했다고 생각했다. 내 애플 리케이션을 네임 스페이스에 넣고 글로벌 경로에 넣고 말한대로 가져올 필요가있는 것 같다. 우리는 그것이 잘되는지 알 수 있습니다 :) –