python管理包路徑之pycharm自動(dòng)解決包路徑注冊(cè)
簡(jiǎn)介
- Python 是一個(gè)高層次的結(jié)合了解釋性、編譯性、互動(dòng)性和面向?qū)ο蟮哪_本語(yǔ)言。你可以將它理解成腳本語(yǔ)言,大多情況我也是將它作為寫腳本工具的一個(gè)方式。
- python 目前存在 python2 和 python3 兩個(gè)大版本,至于他們的區(qū)別我們沒(méi)必要深究,很多新的特性都是在 python3 中引入的,另外 python2 已經(jīng)停止維護(hù)了,所以該選擇誰(shuí)你應(yīng)該清楚了。
模塊化
- 我們?cè)趯W(xué)習(xí)一門語(yǔ)言的時(shí)候可以將所有的 demo 放在同一個(gè)文件夾,這樣方便相互查找,但是在企業(yè)級(jí)的項(xiàng)目中往往會(huì)出現(xiàn)很多功能,正常會(huì)根據(jù)功能進(jìn)行分包管理,在大的項(xiàng)目中更有可能分模塊管理,不管是分包還是分模塊都需要注意一個(gè)問(wèn)題就是如何引用的問(wèn)題, python 會(huì)默認(rèn)在當(dāng)前腳本所在文件夾下尋找所需模塊,如果當(dāng)前沒(méi)有會(huì)去其他系統(tǒng)管理模塊的地方進(jìn)行尋找,很明顯我們自己的分包分模塊的自然不會(huì)被找到,這就需要我們進(jìn)行相應(yīng)的處理。
- 不僅僅是 python 語(yǔ)言中, 模塊這個(gè)概念是凌駕于語(yǔ)言之上,大體上應(yīng)該分為三類
- 內(nèi)置模塊 , 在 python中我們可以通過(guò)
help('modules')來(lái)查看所有的內(nèi)置模塊

- - 第三方模塊 , 就是別人封裝的工具 ,python中可以通過(guò) `pip install` , Java中通過(guò) Maven管理安裝。
- - 剩下的就是我們自定義模塊了,不是所有牛奶都是特侖蘇,也不是所有人封裝的都叫做第三方模塊,我們個(gè)人的封裝局限很大僅使用我們自己的項(xiàng)目。
模塊導(dǎo)入
模塊導(dǎo)入也很方便,除了第三方模塊我們需要 通過(guò)包管理工具安裝一下才能導(dǎo)入,其他模塊我們都可以直接導(dǎo)入。
import module_a: 導(dǎo)入module_a 模塊from module_b import module_b_child: 從 module_b 導(dǎo)入他的方法或者導(dǎo)入他的子模塊import module_c as tom_util: 重命名導(dǎo)入的模塊from module_tom import *: 導(dǎo)入module_tom下所有模塊

- 現(xiàn)在項(xiàng)目中存在兩個(gè)目錄分別為
core、user, core 目錄中存在的token_util.py是我們獲取 web 開(kāi)發(fā)中登錄 token的, 而 user 目錄下則是管理用戶的腳本,這個(gè)時(shí)候 user_util.py 依賴與 token_util.py ,那么我們就需要import token_util。

- 果不其然出現(xiàn)了經(jīng)典的
No module named 'token_util', 上面我已經(jīng)說(shuō)了他只會(huì)去尋找默認(rèn)當(dāng)前路徑和系統(tǒng)模塊路徑的,更換項(xiàng)目結(jié)構(gòu)是不可能的,那么我們?cè)撊绾我?token_util 呢 ?
?import sys
?print(sys.path)
?sys.path.append('../core')
?import token_util- 通過(guò)
sys模塊將 module 模塊管理路徑打印就能發(fā)現(xiàn)只有全局的和當(dāng)前路徑,我們可以將我們需要引入的包的路徑注冊(cè)到模塊管理路徑中,這樣我們就可以引用了。

包
- 上面導(dǎo)入自定義模塊顯得很麻煩,隨著項(xiàng)目成長(zhǎng)會(huì)分很多文件夾用來(lái)表示不同功能,這里文件夾就是包的概念。但是文件夾和包還是不太一樣的。只需要在文件夾下存在一個(gè)
__init__.py就會(huì)變成包了。 這個(gè)文件就是你在調(diào)用包中模塊是自動(dòng)調(diào)用,這個(gè)文件內(nèi)容可以為空哦 - 好像有了包的概念還是解決不了上面手動(dòng)導(dǎo)入的問(wèn)題,沒(méi)錯(cuò)這里始終逃不掉需要手動(dòng)導(dǎo)入的,我們可以將項(xiàng)目的根路徑導(dǎo)入到系統(tǒng)路徑中,這樣我們?cè)趯?dǎo)入模塊是只需要從根路徑出發(fā)導(dǎo)入即可。
- 我們可以寫個(gè)腳本獲取跟路徑并注冊(cè)到系統(tǒng)路徑中
?import os ?import sys ?base_dir=os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.pa ?th.dirname(os.path.abspath(__file__)))))) # 取到路 ?徑/Users/alex/Documents/work/PyProjects/py8days_camp ?print(base_dir) ?sys.path.append(base_dir) # 添加到sys.path?
- 如果你還是覺(jué)得麻煩,不用擔(dān)心
pycharm會(huì)幫助我們解決這個(gè)問(wèn)題,我們通過(guò)pycharm打開(kāi)項(xiàng)目時(shí)會(huì)自動(dòng)將項(xiàng)目的跟路徑注冊(cè)到系統(tǒng)路徑中。就像Idea 打開(kāi)Java項(xiàng)目自動(dòng)會(huì)管理 Package 空間一樣,
到此這篇關(guān)于python本管理包路徑之pycharm自動(dòng)解決包路徑注冊(cè)的文章就介紹到這了,更多相關(guān)pycharm解決包路徑注冊(cè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python異步與定時(shí)任務(wù)提高程序并發(fā)性和定時(shí)執(zhí)行效率
Python異步與定時(shí)任務(wù)是Python編程中常用的兩種技術(shù),異步任務(wù)可用于高效處理I/O密集型任務(wù),提高程序并發(fā)性;定時(shí)任務(wù)可用于定時(shí)執(zhí)行計(jì)劃任務(wù),提高程序的執(zhí)行效率。這兩種技術(shù)的應(yīng)用有助于提升Python程序的性能和效率2023-05-05
python調(diào)用c++ ctype list傳數(shù)組或者返回?cái)?shù)組的方法
今天小編就為大家分享一篇python調(diào)用c++ ctype list傳數(shù)組或者返回?cái)?shù)組的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02
Python利用pdfplumber庫(kù)提取pdf中表格數(shù)據(jù)
pdfplumber是一個(gè)用于從PDF文檔中提取文本和表格數(shù)據(jù)的Python庫(kù),它可以幫助用戶輕松地從PDF文件中提取有用的信息,例如表格、文本、元數(shù)據(jù)等,本文介紹了如何通過(guò)Python的pdfplumber庫(kù)提取pdf中表格數(shù)據(jù),感興趣的同學(xué)可以參考一下2023-05-05
pandas DataFrame 賦值的注意事項(xiàng)說(shuō)明(index)
這篇文章主要介紹了pandas DataFrame 賦值的注意事項(xiàng)說(shuō)明(index),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
python函數(shù)調(diào)用,循環(huán),列表復(fù)制實(shí)例
這篇文章主要介紹了python函數(shù)調(diào)用,循環(huán),列表復(fù)制實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
python自動(dòng)化發(fā)送郵件實(shí)例講解
在本篇文章里小編給大家分享了一篇關(guān)于python自動(dòng)化發(fā)送郵件實(shí)例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。2021-01-01

