Python項目中沒法導入自建模塊包的問題!

Python項目中沒法導入自建模塊包的問題!

相信初心們不少都會遇到這樣的問題。python

自建模塊放在項目中的公用模塊包中,開發工具(pycharm或vscode等等)裏面完美運行,上線或者在shell命令中卻運行報錯,找不到模塊:shell

ModuleNotFoundError: No module named 'xxxx'

遇到這個錯誤的時候,我也曾很是苦惱 ...app

各類度娘 .....ide

多數方法基本無效...(也可能我太笨,或太背...)工具

在經歷了2個半小時的挫折以後,決定本身解決...開發工具

在此分享一下我的解決方案。code



1、項目結構

個人項目結構是這樣的:圖片

輸入圖片說明

spider02:爲項目根目錄路徑開發

spiders:爲爬蟲項目包,其下分N種爬蟲。pycharm

_tools包:就是咱們全部爬蟲公用的工具包了

2、導包方法

那麼問題來了。咱們該如何倒這個自建的工具包呢?

咱們都知道,倒包經常使用方式分兩種:

  • 以當前路徑爲準,輸入目標模塊 或 包的路徑: from .._tools import xxx

  • 以項目根目錄爲準,輸入目標模塊 或 包的路徑: from spiders._tools import xxx

我的建議使用第二種方法。因此,咱們的導包須要這樣倒:

from spider._tools import *

這樣的好處就是,一切都以項目根目錄爲開始,比較統一,不容易出錯。

設置(最終)

說完了導包,咱們最後就來講該怎麼設置這個自建的模塊包呢。

若是光有__init__.py文件的話,也只能說明他是一個可導的文件包。

若是你直接導入它的話,就會報錯。由於,import須要搜索系統環境變量,來肯定所導包的位置。若是找不到,固然會報錯 ...

直奔主題....

Mac系統的環境變量:

在下列文件中,添加你的項目絕對路徑:

/etc/profile
/etc/paths

我的建議添加到第二個裏面。

若是說你不想改變系統的,那麼把項目絕對路徑添加到私人環境變量中也ok:

/private/etc/paths

這是用戶私人的全局,只要打開電腦,登錄後,就會加載。

有人會說,你直接append不就好了麼。

爲想說的是;;;;

若是直接append的話,你就須要把
【每一個用到tools模塊包,或是自建包下面的文件導其餘自建包模塊的時候,要在全部py文件中,都去寫一遍append...】

好了,就寫這麼多....上班時候寫的...見諒。

補充一句,任何項目中導包地方,都是以項目根目錄爲準的。

相關文章
相關標籤/搜索