知りたいこと
gunicorn実行ファイルに書かれたimport文がなぜ機能しているのでしょうか?
経緯
諸事情ありまして、インストールしたライブラリ(gunicorn)の中身を見ていたのですが、以下の通りでした。
1 #!/Library/Developer/CommandLineTools/usr/bin/python3 2 # -*- coding: utf-8 -*- 3 import re 4 import sys 5 from gunicorn.app.wsgiapp import run 6 if __name__ == '__main__': 7 sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) 8 sys.exit(run())
このgunicorn実行ファイルの格納場所は~/Library/Python/3.8/bin/gunicorn
です。
このgunicornを直に実行した場合、from gunicorn.app.wsgiapp import run
でrun
という関数がインポートされます。
そしてこのgunicorn.app.wsgiapp
は~/Library/Python/3.8/lib/python/site-packages
配下にgunicorn/app/wsgiapp.py
という形で格納されています。
この時、なぜ~/Library/Python/3.8/bin/gunicorn
が~/Library/Python/3.8/lib/python/site-packages
配下を見に行けるのかわかりません。fromの指定方法が、from ..lib.python.site-pakeages.gunicorn.app.wsgiapp import run
ならgunicorn実行ファイルからみた位置だと納得できるんですが、なぜfrom gunicorn.app.wsgiapp import run
と書くことができるのでしょうか?
参考
import文についてのドキュメント等も読んでみたんですが、悲しいことに、理解できず。。
・公式
https://docs.python.org/ja/3/reference/import.html
・わかりやすくしてる解説サイト
https://note.nkmk.me/python-import-usage/
環境
macOS Big Sur 11.6.2
Python3.8.2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/18 01:40