日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python什么是入口文件_小问题大隐患:如何正确设置 Python 项目的入口文件?

發布時間:2024/3/26 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python什么是入口文件_小问题大隐患:如何正确设置 Python 项目的入口文件? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有一位同學提到了 Python 找不到模塊的問題:

問題涉及到的代碼結構和代碼截圖如下:

這個問題的解決方法非常簡單,就是把start.py文件從bin文件夾移出來就好了。

但如果對這個問題進一步分析,可以看到更多問題。今天這個問題本質上也是工作區導致的問題。這個同學的項目根目錄是MY_API,所以他使用的編輯器VSCode 就會默認把MY_API當做工作區。所以,當他在start.py文件中寫上from lib.interface import server時,VScode 并不會給他標記紅色波浪線。因為從 VSCode 的視角看,lib文件夾確實就是在工作區下面的。但是,當他在 VSCode 里面運行這個start.py文件時,Python 是從bin文件夾下面運行的。此時,Python 會把bin文件夾當做工作區。在工作區里面就只有這一個start.py文件,所以當然找不到lib文件夾。但問題在于,你不應該這樣做。你不應該把項目的入口文件,放到項目內部很深的文件夾中。所謂入口文件,就是要首先經過它,才能到達其他的文件。當你拿到一個 Python 項目,你只需要首先從入口文件開始閱讀代碼,根據入口文件調用的模塊,一路看下去,你就能讀到它的所有實現邏輯。

但如果大家經常逛 Github,就會發現,有些人可能是被其他垃圾語言污染了思想,他的 Python 項目,根目錄有五六個文件夾和七八個.py文件。你拿到這個項目的時候,你甚至不知道,當你想運行這個代碼的時候,python3 xxx.py應該運行哪個文件。你多方打聽,或者看了半天文檔,才知道,哦,原來入口文件在com/xx/yy/zz/script/run.py。當你打開這個run.py文件,你發現它的頂部,文件導入的代碼寫的是from ../../../../aaa import bbb。簡直是神經病寫法。我知道有些垃圾語言流行這樣寫。但現在你用的是 Python,學聰明一點,別那樣寫。對于一個 Python 項目來說,入口文件應該始終在最外層。例如:

當你要啟動這個項目的時候,直接在最外層python3 main.py,就能把它啟動起來。在main.py里面,你可以導入其他模塊,然后調用其他模塊里面的類或者函數。

這樣做的好處是什么?這樣做,你是在項目的根目錄啟動的這個項目,所以你的工作區就是項目的根目錄。那么你在任何一個.py文件里面都可以很容易地基于工作區導入任意其他文件。例如,你現在在models/mongo-util/mongob_helper.py文件中,你想導入utils/abc.py中的time_format()函數,那么,你只需要這樣寫就可以了。from?utils.abc?import?time_format

你根本不可能出現需要導入父文件夾中的某個模塊的情況。

只有工具腳本,才需要單獨使用一個文件夾來存放,然后調用父文件夾中的其他文件。例如,我現在有一個工具腳本,它每天晚上0點會讀寫 MongoDB,清理無效數據,那么此時,我可以在根目錄單獨創建一個script或tools或者bin文件夾,然后把工具腳本放進去,例如:在這個工具腳本里面,你可能會調用models/mongo-util/mongob_helper.py文件中的某個函數。這種情況下,你調用父文件夾中的內容是可以接受的。但這畢竟只是工具腳本。可能還有同學要問,那如果我的項目是一個 Python 的包,它本身沒有入口文件怎么辦呢?這個時候,你可以把這個包的__init__.py當做它的入口文件。大家可以參考我在 GitHub - kingname/GeneralNewsExtractor: 新聞網頁正文通用抽取器 Beta 版.[1]的代碼組織結構。在項目根目錄留下一個example.py文件,用來演示如何調用這個包。而這個包本身的代碼,是在一個叫做gne的文件夾中的。這個gne文件夾是一個包,它的入口文件在__init__.py中。各位,當你寫代碼的時候,你先想一想,如果別人拿到了你的代碼,想要梳理一下這個項目的邏輯,在不詢問你的情況下,怎么讓他知道應該從哪個文件開始讀?應該按什么順序讀?他能不能輕易地看到數據在你的代碼中是怎么運轉的?

參考資料[1]

GitHub - kingname/GeneralNewsExtractor: 新聞網頁正文通用抽取器 Beta 版.: https://github.com/kingname/GeneralNewsExtractor

總結

以上是生活随笔為你收集整理的python什么是入口文件_小问题大隐患:如何正确设置 Python 项目的入口文件?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。