처음에는 여기에 이미 많은 질문이 있습니다. (This 및 This이 가장 비슷합니다.) 나는 그 중 몇 가지를 읽었지 만, 이것을 달성하기위한 적절한 방법에 대해 여전히 혼란스러워하고있다.모듈 내의 다른 디렉토리/상위 디렉토리 (Python 3)에서 가져 오는 방법에 대해 혼동스럽게 생각합니다.
--LabAnalysisModules
|-- __init__.py
|-- EphysTools
|-- __init__.py
|-- synaptics.py
|-- utilities.py
|-- PrairieAnalysis
|-- pv_import.py
|-- pxml_parse.py
--PVAnalysis
|-- __init__.py
|-- MainWindow.py
|-- DataViewer.py
|-- AnalysisWindows
|-- __init__.py
|-- AnalysisWidget.py
AnalysisWidget는 DataViewer에서 DataViewer 클래스에서 상속 :
나는 내가 그 일하고 있어요 프로젝트 이런 식으로 구성되어 있습니다. DataViewer를 가져 오기 위해 두 가지 혼란이있었습니다.
실제로 DataViewer를 가져 오는 가장 적합한 방법은 무엇입니까? 상대 가져 오기가 나에게 DataViewer I가이 내 기계 LabAnalysisModules 중 일부는 영구적으로 파이썬 경로에 추가되었습니다에 (except 블록 ... 시도하고 내
SystemError: Parent module '' not loaded, cannot perform relative import
을 제공하기 때문에 나는 현재 AnalysisWidget에서
sys.path.append(os.path.abspath("../../PVAnalysis"))
을 포함에 의존하고있다 다른 사람이)되지 않은 DataViewer 자체가 잘 작동 실행try: import PrairieAnalysis.pv_import as pvi import EphysTools.utilities as util except ImportError: import os sys.path.append(os.path.abspath('../LabAnalysisModules')) import PrairieAnalysis.pv_import as pvi import EphysTools.utilities as util
,하지만 난 AnalysisWidget
에서 다른 가져 오기 오류 import DataViewer
으로 실행
위 except
블록에 print(sys.path)
추가,이 DataViewer을 가져올 때의 sys.path에 추가되는 것입니다 :
E:\\Users\\Dan\\SkyDrive\\Documents\\Python\\PVAnalysis\\LabAnalysisModules'
분명히 정확하지된다.
나는 AnalysisWidget
에서 sys.path.append('../../LabAnalysisModules')
를 포함하여 가져 오기 오류를 해결할 수 있지만, 이것은 매우 미봉책 수정 내가 코멘트에서 말하는 것처럼
편집 한
, 궁극적으로 AnalysisWidget은 MainWindow를 가져올 수 것 같아 . 다시 말하면, 상대적 수입이 어떻게 작동하는지에 대해서는 분명하지 않습니다. 방법 : 하루의 끝에서
from .. import DataViewer
ValueError: attempted relative import beyond top-level package
을, 내가 할 노력하고있어 두 가지가 있습니다 :
단순히 AnalysisWidget.py를 실행할 수 있습니다 (I 일반적으로 당신은 때로 믿을 것을 알고있다 모듈 내에서 스크립트를 실행해야하지만, GUI를 만들 때는 언제나이 작업을 수행합니다.
AnalysisWidget을 MainWindow로 가져올 수 있어야합니다.
LabAnalysisModules에 대한 가져 오기 작업도 정리하면 좋습니다.패키지 수입은 파이썬 3에서 제대로 작동하기 위해서는
어떻게 'AnalysisWidget'을 호출합니까? 직접적으로 또는'-m' 스위치를 사용하여 파이썬으로 전환 할 수 있습니까? – Kevin
위에서보고 된 SystemError는 파이썬 셸 내에서 AnalysisWidget을 가져 오는 중입니다. 나는 -m 스위치를 사용해 보았지만, 스펙을 찾는 중에 Error를 얻었을 때 뭔가 제대로하고있는 것처럼 보이지 않는다. – user3014097
궁극적으로, AnalysisWidget은 MainWindow에 의해 반입 될 것이다. – user3014097