>  기사  >  백엔드 개발  >  Python의 상위 디렉터리 모듈로 가져오기 및 순환 가져오기 문제

Python의 상위 디렉터리 모듈로 가져오기 및 순환 가져오기 문제

高洛峰
高洛峰원래의
2017-03-03 15:20:441949검색

상위 디렉터리의 가져오기 모듈

파이썬에서 가져오기 모듈은 sys.path를 검색하며, 수정할 수 있습니다. 동적으로요.
특정 디렉터리의 모듈을 가져오려면 sys.path.insert(0,somedir)를 사용하여 검색 경로를 추가한 다음 가져옵니다.
이 경우, 상위 디렉터리에 있는 모듈을 import하고 싶다면 sys.path.insert(0,parentdir)를 사용하면 됩니다.
그러나 이 절대 경로 작성 방법은 파일이 다른 곳에 있으면 작동하지 않습니다.
따라서 동적 방법을 사용하여 상위 디렉터리를 가져옵니다.

import os,sys 
parentdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 
sys.path.insert(0,parentdir)

sys.path.append(parentdir) 대신 sys.path.insert(0,parentdir)를 사용하는 이유
왜냐하면 검색이 경로를 순회하므로 다른 경로에 같은 이름의 모듈이 있으면 가져오기 오류가 발생합니다. 이 경로가 먼저 검색되도록 하려면 sys.path.insert(0,parentdir)를 사용하세요.

순환 가져오기 문제 해결
파이썬에서는 순환 가져오기, 즉 순환 가져오기 문제에 자주 직면합니다.
이런 우스꽝스러운 상황은 현실에서 자주 발생합니다.
무선 네트워크 카드를 설치할 때 네트워크 카드 드라이버를 온라인에 접속해야 합니다.
압축 소프트웨어 설치 시 압축 소프트웨어 설치 프로그램은 아래에서 다운로드 받습니다. 인터넷은 실제로 압축되어 있습니다..
순환 의존도 이와 비슷합니다.
예를 들어,
은 models.py에 있고,

from server import db 
class User(db.Model): 
  pass

는 server.py에 있고,

from flask import Flask 
from flask.ext.sqlalchemy import SQLAlchemy 
app = Flask(__name__) 
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db' 
db = SQLAlchemy(app) 
from models import User

이로 인해 순환 가져오기 문제가 발생합니다.
순환수입 문제를 해결하는 방법은 크게 여러 가지가 있습니다.
1. Lazy import
메서드나 함수에 import 문을 작성하여 범위를 로컬 영역으로 제한합니다.
이 방법의 단점은 성능 문제가 있다는 것입니다.
2. 양식에 액세스하려면 xxx import yyy에서 import xxx;xxx.yyy로 변경하세요.
3. 코드 구성
순환 가져오기 문제는 코드 레이아웃에 문제가 있음을 의미하는 경우가 많습니다. .
경쟁 리소스는 병합되거나 분리될 수 있습니다.
병합하려면 모두 하나의 파일에 작성하면 됩니다.
분리란 타사 파일로 가져와야 하는 리소스를 추출하는 것을 의미합니다.
간단히 말하면 루프를 한 방향으로 바꾸는 것입니다.

Python의 상위 디렉토리 모듈로 가져오기 및 순환 가져오기 문제와 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.