나는 프로젝트 참조 목록에 서로를 가지고있는 PyDev에 3 개의 프로젝트를 설정했습니다. 다시 예를 위해서레터스와 함께 지뢰를 반입
proj_f
pack_foo
mod_fooa (contains class Fooa)
mod_foob (contains class Foob)
mod_faa (contains class Faa)
pack_fii
mod_fiia (contains class Fiia)
mod_fiib (contains class Fiib)
proj_b
mod_bar (contains function func_bar)
pack_baz
mod_baza (contains class Baza)
mod_bazb (contains class Bazb)
proj_t
tester (what I'm running from)
, 테스터 :
from pack_foo.mod_fooa import Fooa
from pack_fii.mod_fiia import Fiia
from mod_bar import func_bar
func_bar(Fooa(), Fiia())
및 mod_bar : 설명을 위해
from pack_foo.mod_fooa import Fooa
from pack_fii.mod_fiia import Fiia
def func_bar(fooa, fiia):
if not fooa:
fooa = Fooa()
if not fiia:
fiia = Fiia()
fooa.do_magic()
fiia.do_magic()
내가보고 있어요 foo는 일부 수입 ImportError: cannot import name
을 얻을 것입니다 mod_bar에서 테스터로부터 호출 할 때 (결정적으로, 일부는 아니지만 모두). mod_bar 만 실행하면 가져 오기가 제대로 작동합니다. mod_bar에서 종속성 및 가져 오기를 제거하고 테스터에서 실행할 경우 제대로 작동합니다. 클래스의 하위 집합을 f에서 b와 t로 가져오고 t에서 실행할 경우에만 중단됩니다. 나는 임포트가 어떻게 작동하고 솔루션을 찾기 위해 문서를 읽으려고 노력했지만 올바른 방향으로 나를 가리키는 것을 발견하지 못했다. 이 부분이 파이썬 내부의 애매한 부분과 관련이 있다는 느낌이 들지만, 그것이 무엇인지 알기에는 충분하지 않습니다.
나는이 정확하게 mod_bar
에 tester
에서 참조가 간접적 인 것을 포함 복잡성의 추가 층 (I가 작업 할 tester
내가 내 코드 주변에 원숭이에 사용하는 파일입니다 존재하지만, 무슨 일이 일어나고 있는지 나타냅니다 생각 그 중 mod_bar
은 실제로 레터스 지형 파일이며, 레터스는 tester
이 호출하는 다른 모듈에 의해로드됩니다. 누군가가이 문제를 해결하는 방법에 대한 정보를 찾기 시작할 수있는 장소를 적어도 제공 할 수 있습니까?
편집 :
내가이 좀 더 구체적으로 스택 추적을보고했다 :
Traceback (most recent call last):
File "C:\Python27\Lib\site-packages\lettuce\__init__.py", line 53, in <module>
terrain = fs.FileSystem._import("terrain")
File "C:\Python27\Lib\site-packages\lettuce\fs.py", line 74, in _import
module = imp.load_module(name, fp, pathname, description)
File "C:\Users\adminsetup\workspace\nytd_lettuce_lib\terrain.py", line 6, in <module>
from session.session import Session
ImportError: cannot import name Session
lettuce.__init__()
에서 terrain = fs.FileSystem._import("terrain")
나에게 이러한 두통을주는 원인이 원형 수입 될 수 있을까?