Python import自己的模塊報錯問題及解決
在實際使用python時,我們會將一些公共的東西寫到一些基礎(chǔ)模塊中,供其他模塊去調(diào)用,這時會去import自定義的一些基礎(chǔ)模塊,然后來導(dǎo)入。
自己寫好了腳本,然后導(dǎo)入,導(dǎo)入的情況分為以下情況:
1. 運行的模塊與需要調(diào)用自定義基礎(chǔ)模塊在同一文件夾下
2. 自定義模塊與所需要調(diào)用自定義模塊的文件不在同一文件夾下
一、同一文件夾下
這時的調(diào)用就較為簡單了,直接導(dǎo)入即可
from deal_excel import copy_sheetWrite, row_commonWrite from deal_time import minus_date
但是這個時候在PyCharm中顯示的是報錯
但是運行程序是不會報錯的
為了讓在PyCharm中不報錯,可以將包/文件夾設(shè)為 sources Root
現(xiàn)在就不報錯了
在cmd命令中執(zhí)行也是成功的
如果在模塊前面加上包名(下面有個__init__.py)或者文件夾名
from msydwork.deal_excel import copy_sheetWrite, row_commonWrite from msydwork.deal_time import minus_date
PyCharm中顯示不報錯,運行程序成功
但是在cmd命令中運行卻是失敗的
所以對于處于同一文件夾下的情況:直接導(dǎo)入模塊;為了PyCharm中不報錯,將包/文件夾設(shè)為sources Root
二、處于不同文件夾下面
在PyCharm中是不會報錯而且執(zhí)行成功,是由于將deal_excel、deal_time所在包設(shè)為sources Root:
這時在cmd命令中是執(zhí)行失敗的
在PyCharm中是不會報錯而且執(zhí)行成功另外一種方法:導(dǎo)包時全路徑(可以不設(shè)sources Root)
這時在cmd命令中也是報錯的
為了讓代碼在cmd命令中執(zhí)行成功,需要將自定義基礎(chǔ)模塊的文件夾/包添加到Python的庫路徑中。
三、找到本地庫的路徑,然后將文件拷進(jìn)去即可
拷貝到\Lib\site-packages中
PyCharm中是不會報錯而且執(zhí)行成功
cmd命令中執(zhí)行成功
四、手動給python添加搜索路徑
在python安裝目錄的\Lib\site-packages文件夾中建立一個.pth文件,內(nèi)容為自己寫的庫絕對路徑
這個時候PyCharm中是會報錯的,但是執(zhí)行是成功的
cmd命令是執(zhí)行成功的。
還有一種方法導(dǎo)入完整路徑:
將根目錄設(shè)為搜索路徑
這時候不管在PyCharm還是cmd執(zhí)行都是成功的
所以對于處于不同一文件夾下的情況:先手動給python添加搜索路徑(根目錄),然后直接導(dǎo)入模塊全路徑;
在這里說一句Python的包搜索路徑
Python會在以下路徑中搜索它想要尋找的模塊:
1. 程序所在的文件夾
2. 標(biāo)準(zhǔn)庫的安裝路徑
3. 操作系統(tǒng)環(huán)境變量PYTHONPATH所包含的路徑
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python OS系統(tǒng)解決路徑中空格原因?qū)е挛募虿婚_的問題
這篇文章主要介紹了Python OS系統(tǒng)解決路徑中空格原因?qū)е挛募虿婚_的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02Python正則表達(dá)式?r'(.*)?are?(.*?)?.*'的深入理解
日常的開發(fā)工作中經(jīng)常會有處理字符串的需求,簡單的字符串處理,我們使用python內(nèi)置的字符串處理函數(shù)就可以了,但是復(fù)雜的字符串匹配就需要借助正則表達(dá)式了,這篇文章主要給大家介紹了關(guān)于Python正則表達(dá)式?r‘(.*)?are?(.*?)?.*‘的相關(guān)資料,需要的朋友可以參考下2022-07-07Python企業(yè)編碼生成系統(tǒng)總體系統(tǒng)設(shè)計概述
這篇文章主要介紹了Python企業(yè)編碼生成系統(tǒng)總體系統(tǒng)設(shè)計,簡單描述了Python企業(yè)編碼生成系統(tǒng)的功能、結(jié)構(gòu)與相關(guān)編碼實現(xiàn)技巧,需要的朋友可以參考下2019-07-07Pytorch實現(xiàn)常用乘法算子TensorRT的示例代碼
pytorch 用于訓(xùn)練,TensorRT用于推理是很多AI應(yīng)用開發(fā)的標(biāo)配。大家往往更加熟悉 pytorch 的算子,而不太熟悉TensorRT的算子。本文介紹了Pytorch中常用乘法的TensorRT實現(xiàn),感興趣的可以了解一下2022-06-06Python?pandas中apply函數(shù)簡介以及用法詳解
apply()函數(shù)是pandas里面所有函數(shù)中自由度最高的函數(shù), apply()函數(shù)的參數(shù)是一個函數(shù)指針,這里可以使用lambda表達(dá)式幫助簡化代碼,下面這篇文章主要給大家介紹了關(guān)于Python?pandas中apply函數(shù)簡介以及用法的相關(guān)資料,需要的朋友可以參考下2022-09-09