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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pycharm自定义包的导入

發布時間:2025/4/5 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pycharm自定义包的导入 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

https://blog.csdn.net/haiyanggeng/article/details/79215819?
https://blog.csdn.net/u010278162/article/details/52043308

PyCharm下解決Unresolved Reference問題
python在同級目錄下理應可以直接import的,而到Pycharm的.py文件在同一級目錄下調用卻會出現Unresolved Reference,網上查了下資料,了解了一下python在import的時候到底執行了什么操作。在這之前先貼上解決方法:

進入PyCharm->Settings->Build,Excution,Deployment->Console->Python Console勾選上Add source roots to PYTHONPATH;
進入PyCharm->Settings->Project->Project Structure,選中框中文件目錄(即你的需要相互調用的py文件所在目錄)右鍵添加sources;
點擊Apply和OK之后即可.(應該要重啟Pycharm)
接下來大概了解下python在import的時候做的事情:

1. 創建一個新的,空的module對象(它可能包含多個module)

? ?#一個module也就是一個.py文件,里面包含定義的函數和變量
1
2. 把這個module對象插入sys.module

? ? #sys.modules是一個全局字典,該字典是python啟動后就加載在內存中,每次導入模塊的時候sys.modules都會將
? ? #它加入字典,sys.modules對于加載模塊起到了緩沖的作用。當某個模塊第一次導入,字典sys.modules將自動記錄
? ? #該模塊。當第二次再導入該模塊時,python會直接到字典中查找,從而加快了程序運行的速度。
1
2
3
3. 裝載module的代碼(如果需要,首先必須編譯)

4. 執行新的module中對應的代碼

在執行第3步時,首先要找到module程序所在的位置,其原理為:如 果需要導入的module的名字是m1,則解釋器必須找到m1.py,它首先在當前目錄查找,然后是在環境變量PYTHONPATH中查找。 PYTHONPATH可以視為系統的PATH變量一類的東西,其中包含若干個目錄。如果PYTHONPATH沒有設定,或者找不到m1.py,則繼續搜索 與python的安裝設置相關的默認路徑,在Unix下,通常是/usr/local/lib/python。事實上,搜索的順序是:當前路徑 (以及從當前目錄指定的sys.path),然后是PYTHONPATH,然后是python的安裝設置相關的默認路徑。正因為存在這樣的順序,如果當前 路徑或PYTHONPATH中存在與標準module同樣的module,則會覆蓋標準module。也就是說,如果當前目錄下存在xml.py,那么執 行import xml時,導入的是當前目錄下的module,而不是系統標準的xml。

了解了這些,我們就可以先構建一個package,以普通module的方式導入,就可以直接訪問此package中的各個module了。

Python中的package定義很簡單,其層次結構與程序所在目錄的層次結構相同,這一點與Java類似,唯一不同的地方在于,python中的package必須包含一個init.py的文件。?
例如,我們可以這樣組織一個package:


package1/
? ? __init__.py
? ? subPack1/
? ? ? ? __init__.py
? ? ? ? module_11.py
? ? ? ? module_12.py
? ? ? ? module_13.py
? ? subPack2/
? ? ? ? __init__.py
? ? ? ? module_21.py
? ? ? ? module_22.py
? ? ……
1
2
3
4
5
6
7
8
9
10
11
12
13
init.py可以為空,只要它存在,就表明此目錄應被作為一個package處理。當然,init.py中也可以設置相應的內容。
?

總結

以上是生活随笔為你收集整理的Pycharm自定义包的导入的全部內容,希望文章能夠幫你解決所遇到的問題。

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