Today I Learnt How to Import
5076 ワード
sys.module
システムにインポートしたモジュールとパッケージが格納されます.辞書の形で保存されています.importパスを再宣言する必要がない機能があります.
built-in modules
pythonが提供する公式ライブラリ.print、lenなどのbuild-in関数はPythonがデフォルトで格納しているライブラリです.次のリンクでリストを表示できます.
Python built_in module index
sys.path
ファイルがシステムに格納されているパス.
['',
'/Users/song-eun-u/anaconda3/bin',
'/Users/song-eun-u/anaconda3/lib/python36.zip',
'/Users/song-eun-u/anaconda3/lib/python3.6',
'/Users/song-eun-u/anaconda3/lib/python3.6/lib-dynload',
'/Users/song-eun-u/anaconda3/lib/python3.6/site-packages',
'/Users/song-eun-u/anaconda3/lib/python3.6/site-packages/aeosa',
'/Users/song-eun-u/anaconda3/lib/python3.6/site-packages/IPython/extensions',
'/Users/song-eun-u/.ipython']
次のパスで表されます.左から右が上位フォルダで、右に曲がるにつれて奥行きが増すと理解できます.対応するパスが見つからない場合は、ModuleNotFoundErrorが発生するリスト形式で表示されます.
sys
Pythonはどのようにsysの経路を見つけますか?
sysをインポートして印刷すればわかります.
🐍
import sys
print(sys)
🚩결과
<module 'sys' (built-in)>
結果に示すようにsysのパスはbuild-inモジュールである.Pythonに保存されているため、別途検索する必要はないことがわかります.Absolute pathと相対path
絶対パスと相対パス.絶対パスは、その名の通りファイルに読み込まれた絶対パスです.
上のシステム.pathに示すように、リスト形式のアドレスであり、絶対親フォルダユーザーからファイルへの詳細なパスである.たとえば、上記のコードのアドレス:
大韓民国ソウル特別市江南区テヘラン路427号工作塔と同じ住所だ.
アドレスの詳細は間違いありませんが、ファイルのように奥行きの深いアドレスを使う場合は複雑で、毎回面倒です.したがって,相対アドレス探索経路を用いる.ソウル江南区(カンナムグ)に住んでいる人同士の住所を共有すれば.
テヘラン路427号工作塔はすでに江南区で対話しており、前の部分を省略することができる.
相対パスもそうです.モジュールとパッケージが同じファイルに格納されている場合は、親フォルダに宣言することなく、現在のフォルダでフォルダを検索できます.
コンピュータパッケージの作成によるパスの理解
ここにいるよpyは、ユーザーにコードがないことを伝える役割ですが、ディレクトリはパッケージです.
各ファイルには、次のコードが含まれています.
main.py
# absoulte path
#from calculator.add_and_multiply import add_and_multiply
# relative path
from .calculator.add_and_multiply import add_and_multiply
if __name__ == '__main__':
print(add_and_multiply(1,2))
add_and_multiply.pyfrom .multiplication import multiply
# from calculator.multiplication import multiply
def add_and_multiply(a,b):
return multiply(a,b) + (a+b)
multiplication.pydef multiply(a,b):
return(a*b)
main.pyにadd and multiplyをインポートしてみます. [Errno 2] No such file or directory
このようなエラーが発生し、実行できないという.現在のmain.pyの現在のパスはmainなので、絶対パスを使用する必要があります.init.pyファイルの役割
ファイルを含むディレクトリがパッケージであることを示します.また、
__init__.py
ファイルで使用するファイルのパス数を減らすことができます.python3.3バージョンから
__init__.py
がなくてもパッケージとして扱うことができるため、使用する必要はありませんが、以前のバージョンでは作成して使用する必要があります.Reference
この問題について(Today I Learnt How to Import), 我々は、より多くの情報をここで見つけました https://velog.io/@jung2one/T.I.LToday-I-Learnt-How-to-Importテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol