[비망]자작 모듈 import시의 Path 취득(Jupyter계도 포함)
내용
보통 쓰는 방법도 잊을 것 같아서
__init__.py
(초보자용) 일반 쓰기
C라면 컴파일시에 include하는 헤더 파일이라든지 직접 상대 Path라든지로 지정할 수 있었던 생각이 듭니다만,
파이썬에서는 다음과 같이 작성해야하는 것 같습니다.
import sys, pathlib
# currentの親ディレクトリのパスを取得
current_dir = pathlib.Path(__file__).resolve().parent
# モジュールのあるパスをsys.pathにappendして通す,今回目的のmodule群のディレクトリは一個上の階層にあるので/../
sys.path.append(str(current_dir) + '/../')
# 今回の目的のモジュール群とその関数を__init__.pyでsignalfuncディレクトリ内モジュール群とその関数全てimportしている
from signal_func import *
from exec_func import *
jupyter 시스템에서 쓰는 법
보통 쓰는 법이라면
NameError: name '__file__' is not defined
라고 화내므로 다음과 같이 써 씁니다.import sys, os
from pathlib import Path
# signalfuncなどのある親ディレクトリのパスを取得,これはJupyter系特有の書き方
current_dir = os.path.join(Path().resolve())
# モジュールのあるパスを追加
sys.path.append(str(current_dir) + '/../')
from signal_func import *
from exec_func import *
import에서의 __init__.py
__init__.py
에는 여러가지 역할이 있습니다만 모듈의 import에 있어서는 편리한 역할을 가지고 있습니다.예를 들어, 이번 signal_func 디렉토리 내에는 다음과 같은 대량의 모듈 파일을 가지고 있어 각각 다양한 함수를 내포하고 있습니다.
import에서
__init__.py
는 해당 디렉토리가 import될 때 실행되는 파일입니다.즉
from signal_func import *
를 한 시점에서 signal_func 디렉토리내의 __init__.py
가 실행되어 각 분석 모듈(bband.py라든지)에 내포된 모든 함수(bband_buy_func(),bband_sell_func()라든지)를 *로 import해 그대로 호출할 수 있도록 하고 있다는 것이 됩니다.실제로 jupyter에서 import한 signál_func를 실행하면 ...
pathlib로 취득해 sys에 추가(통한)한 path처의 signal_func 디렉토리의
__init__.py
를 모듈로서 불리고 있습니다.
Reference
이 문제에 관하여([비망]자작 모듈 import시의 Path 취득(Jupyter계도 포함)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Ric418/items/0b0de6bb090222838381텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)