パッケージビューの作成
10680 ワード
1.写真と同じディレクトリ構造とファイル内のコードを含むファイルパッケージを直接下に作成します。
試す
📄 ディレクトリ構造
💻 main.py
# relative path
from .calculator.add_and_multiply import add_and_multiply
if __name__ == '__main__':
print(add_and_multiply(1,2))
💻 add_and_multiply.py
from .multiplication import multiply
# from calculator.multiplication import multiply
def add_and_multiply(a,b):
return multiply(a,b) + (a+b)
💻 multiplication.py
def multiply(a,b):
return(a*b)
数学者
Traceback (most recent call last):
File "C:\Users\최대환\PycharmProjects\pythonProject\venv\main.py", line 6, in <module>
from .calculator.add_and_multiply import add_and_multiply
ImportError: attempted relative import with no known parent package
参考資料
クリスタル
💻 main.py
# absoulte path
from calculator.add_and_multiply import add_and_multiply
if __name__ == '__main__':
print(add_and_multiply(1,2))
👀 結果
5
2. add_and_multiply.pyから複数の関数の絶対パスと相対パスをインポートしてみます!
絶対パス
💻 add_and_multiply.py
from calculator.multiplication import multiply
def add_and_multiply(a,b):
return multiply(a,b) + (a+b)
print(add_and_multiply(1,2))
👀 結果5
相対パス
💻 add_and_multiply.py
from .multiplication import multiply
def add_and_multiply(a,b):
return multiply(a,b) + (a+b)
print(add_and_multiply(1,2))
👀 結果ImportError: attempted relative import with no known parent package
知るところ
mainモジュールとの違いは?
__init__.pyファイルの役割は?
__init__.py
packageインポート時 __init__.py
ファイル内のコードが自動的に実行されます__init__.py
ファイルは、通知ディレクトリがパッケージであることを示す役割を果たす.👉 例
📄 ディレクトリ構造(テストファイルの生成)
💻
__init__.py
from .test import hello
💻 test.pydef hello():
print("hello")
💻 main.py
from calculator.add_and_multiply import add_and_multiply
if __name__ == '__main__':
print(add_and_multiply(1,2))
from calculator import hello
hello()
👀 結果5
hello
💻
__init__.py
from .test import hello
from .add_and_multiply import add_and_multiply
from .multiplication import multiply
__all__ = ['hello'] #hello함수만 허용해준다.
💻 main.py
from calculator import *
hello()
if __name__ == '__main__':
print(add_and_multiply(1,2))
👀 結果NameError: name 'add_and_multiply' is not defined
hello
Reference
この問題について(パッケージビューの作成), 我々は、より多くの情報をここで見つけました https://velog.io/@gigymi2005/패키지-만들어보기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol