Python全棧day21(調用模組路徑BASEDIR的正確方法)

來源:互聯網
上載者:User

標籤:檔案夾   分享   相對路徑   定義   module   目錄結構   mod   from   int   

正常寫python程式會有一個可執行檔bin.py檔案,假如這個檔案需要匯入my_module裡面定義的模組,應該怎麼設定sys.path

檔案夾目錄結構如下,因為bin不在與my_module同級目錄下,而是在bin目錄下,如果直接使用from my_module import main調用模組肯定會報錯,需要把對應的上一級目錄day21_lesson添加到sys.path

 

  一,使用絕對路徑添加

import sys,ossys.path.append(r‘D:/blzfmima/python3_s3/day21/day21_lesson/‘)from my_module import mainmain.run()print(__name__)if __name__ == ‘__main__‘:    pass

  使用絕對路徑把對應的目錄添加到sys.path裡面相當於把程式寫死了,一旦目錄結構發生變化或者複製到其他主機將不能運行

 

  二,使用相對路徑添加

  __file__變數是檔案的名稱

  os.path.dirname 是os內建方法取檔案的路徑這裡連續使用兩次方法取檔案bin.py路徑為D:/blzfmima/python3_s3/day21/day21_lesson/bin 然後在針對這個路徑再取一次路徑擷取需要的路徑D:/blzfmima/python3_s3/day21/day21_lesson/

import sys,osBASE_DIR = os.path.dirname(os.path.dirname(__file__))sys.path.append(BASE_DIR)#sys.path.append(r‘D:/blzfmima/python3_s3/day21/day21_lesson/‘)from my_module import mainmain.run()print(__name__)if __name__ == ‘__main__‘:    pass

  以上可以在pycharm裡面正常實現調用,但是在終端執行還是會出錯,因為Pycharm會自作主張添加絕對路徑

 

  三,終極方法 使用os.path.abspath取檔案bin.py絕對路徑 然後使用兩次os.path.dirname取到上兩層的路徑及本列的路徑D:/blzfmima/python3_s3/day21/day21_lesson/

import sys,osBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))sys.path.append(BASE_DIR)#sys.path.append(r‘D:/blzfmima/python3_s3/day21/day21_lesson/‘)from my_module import mainmain.run()print(__name__)if __name__ == ‘__main__‘:    pass

  

 

Python全棧day21(調用模組路徑BASEDIR的正確方法)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.