質問内容
1.pythonで相対パスを記載した際に、どのディレクトリを基準として解決するのか
2.モジュールをimportする際にどのディレクトリを基準とするのか
1.について
例えば、ディレクトリ構造が
/project/src/main.py
/project/chromedriver/chromedriver.exe
のmain.pyでdriver_path = "./chromedriver/chromedriver.exe"として、seleniumを動かします。
作業ディレクトリを/projectの状態でpython ./src/main.pyを起動すると、カレントディレクトリ=作業ディレクトリを基準にしてchromedriverのpathが認識されるのはわかります。
しかし、cd /project/srcを行ったのち、python main.pyを実行してもchromedriverのpathが認識されてしまいます。
pythonの内部ではどのように相対パスを解釈しているのでしょうか?
Python
1from selenium import webdriver 2from selenium.webdriver.chrome.service import Service 3import os 4import time 5 6driver_path = "./chromedriver/chromedriver.exe" 7service = Service(excutable_path = driver_path) 8driver = webdriver.Chrome(service=service) 9 10print(f"カレントディレクトリは{os.getcwd()}") 11driver.get("https://www.google.com/") 12time.sleep(5) 13driver.quit()
2.について
/project/src/main.py
/project/src/module.py
main.pyからimport moduleをしたい場合についてです。
作業ディレクトリをprojectの状態でpython ./src/main.pyを実行してもimoprtは成功します。
importにおいてのモジュールパスの認識はmain.pyからの相対パスであってカレントディレクトリは関係ないということですか?