python - 徹底解決import報(bào)錯(cuò)問(wèn)題
在Python項(xiàng)目中,import語(yǔ)句的使用和管理是關(guān)鍵步驟,不當(dāng)操作可能導(dǎo)致一系列困擾的錯(cuò)誤。本文旨在解決import問(wèn)題,提供實(shí)用的解決方案,不過(guò)限于基礎(chǔ)情況,不涉及框架、工具或進(jìn)階技術(shù)。
問(wèn)題的核心在于,當(dāng)你在自己的包中進(jìn)行import時(shí),絕對(duì)導(dǎo)入會(huì)默認(rèn)查找入口點(diǎn)(啟動(dòng)項(xiàng)目的文件或包)所在的目錄。例如,運(yùn)行main.py時(shí),搜索路徑為/project/src,若src下沒(méi)有module12,module11的import就會(huì)失敗。
為解決這個(gè)問(wèn)題,有四種主要的策略:
- 始終從入口點(diǎn)導(dǎo)入:在編寫(xiě)代碼時(shí),確保所有文件的導(dǎo)入都遵循入口點(diǎn)的路徑。例如,將module11的import語(yǔ)句改為from package1 import module12。
- 調(diào)整搜索路徑:使用sys.path.append來(lái)添加缺失模塊的路徑,但要避免絕對(duì)路徑和依賴于入口點(diǎn)的相對(duì)路徑,推薦使用pathlib寫(xiě)相對(duì)路徑。
- 用pip安裝自己的包:通過(guò)構(gòu)建工具(如flit)創(chuàng)建和安裝可被編輯的包,這樣在虛擬環(huán)境中導(dǎo)入包就變得簡(jiǎn)單。
- 相對(duì)導(dǎo)入:相對(duì)導(dǎo)入可以簡(jiǎn)化代碼,但僅適用于解決特定模塊間的導(dǎo)入問(wèn)題,不適用于入口點(diǎn)以上的包。
總結(jié)來(lái)說(shuō),避免“找不到模塊”錯(cuò)誤的步驟包括理解入口點(diǎn)、調(diào)整導(dǎo)入策略、適當(dāng)使用構(gòu)建工具,以及注意循環(huán)導(dǎo)入和模塊執(zhí)行的順序問(wèn)題。通過(guò)這些方法,可以有效地管理Python項(xiàng)目的import操作,減少報(bào)錯(cuò)情況。
相關(guān)評(píng)說(shuō):
江津市軸測(cè): ______ from xml.etree import ElementTree filePath = 'd:\\aaa.xml' xmldoc = ElementTree.parse(filePath) newName = 'bbb.xml' xmldoc.write(newName, 'utf-8')
江津市軸測(cè): ______ 第一個(gè)辦法,降低數(shù)據(jù)集的大小.python處理數(shù)據(jù),如果數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)超過(guò)2GB,通常都會(huì)很慢.如何降低數(shù)據(jù)集大小,需要修改算法.第二個(gè)辦法,將數(shù)據(jù)結(jié)構(gòu)采用數(shù)組array或者是numarray存貯.這樣內(nèi)存數(shù)量與查找效率都會(huì)提高.盡量不要使用大的dict.使用一個(gè)省內(nèi)存的blist代替list 第三個(gè)辦法,將數(shù)據(jù)通過(guò)共享內(nèi)存,讓C++擴(kuò)展模塊來(lái)處理.常用的是第二種辦法.就是換個(gè)數(shù)據(jù)結(jié)構(gòu)就可以提高效率.
江津市軸測(cè): ______ 使用requests模塊的post方法,采集數(shù)據(jù). 給你個(gè)例子吧,哎,10分少了點(diǎn). # -*- coding:utf-8 -*- import requests datas = {'year_id': 2017, 'quarter_id': 1, 'CsrfCheckCode': 'g9zcdo'} re_url = requests.post('http://www.aeps-info.com/aeps/ch/reader/issue_list.aspx', data=datas) print(re_url.text)
江津市軸測(cè): ______ 在將字符串寫(xiě)入文件時(shí),執(zhí)行f.write(str),后臺(tái)總是報(bào)錯(cuò):UnicodeEncodeError: 'ascii' codec can't encode character u'\u6211' in position 0: ordinal not in range(128),即ascii碼無(wú)法被轉(zhuǎn)換成unicode碼.剛開(kāi)始我以為Python默認(rèn)的編碼是utf-8,...
江津市軸測(cè): ______ Ubuntu10.10 下解決Python CPU占用100%的方法 收藏 在Ubuntu10.10中,python-ibus中存在問(wèn)題,這個(gè)是10.10中的python有bug. 是由于使用輸入法過(guò)程中點(diǎn)擊了設(shè)置屬性頁(yè)所引起的,注銷一下再登錄桌面就好了. 徹底的解決辦法是添加更新此源:ppa:karl-qdh/ppa view plaincopy to clipboardprint? 1. sudo add-apt-repository ppa:karl-qdh/ppa 2. sudo apt-get update 3. sudo apt-get upgrade
江津市軸測(cè): ______ 有兩條方法可以很好的解決.1:pip2 install xx (對(duì)應(yīng)Python2) pip3 install xx (對(duì)應(yīng)Python3)2:py -2 -m pip install xx (對(duì)應(yīng)Python2) py -3 -m pip install xx (對(duì)應(yīng)Python3)
江津市軸測(cè): ______ windows底下單獨(dú)通過(guò)命令行使用pip可能確實(shí)有點(diǎn)別扭,畢竟不是linux. 推薦兩類解決方案: 使用某種python的IDE,比如VS加PTVS.這種IDE帶有virtualenv的功能;以對(duì)每一個(gè)project,我們都可以放一個(gè)requirements.txt,讓virtualenv調(diào)用pip...
江津市軸測(cè): ______ 先設(shè)置一下路徑試試,或都輸入IMP命令的絕對(duì)路徑.
江津市軸測(cè): ______ import urllib2import urllib #定義一個(gè)要提交的數(shù)據(jù)數(shù)組(字典)data = {}data['username'] = 'zgx030030'data['password'] = '123456' #定義post的...