注意:python2和python3的包內import語法有區別,下面介紹一下python3的包內import語法
例如在admin.py檔案中要引入dealcode.py檔案:
1、在目錄下有__init__.py檔案
2、在admin.py檔案中加一行:from . import dealcode
(如果要引入同一目錄下的dealcode.py檔案中的乙個類hello,在admin.py檔案中加一行:from .dealcode import hello)
可以直接在__init__.py中import,在該目錄下的檔案都可以使用__init__.py檔案中import的東西
如果還是不行的話,注意一下當前目錄是否已經被加入pythonpath環境變數中了,
如果是命令列,系統會預設當前目錄已經在環境變數中
如果是pycharm,則不會預設當前目錄已經在環境變數中,需要配置一下:參考這篇部落格
如果python 從乙個資料夾裡匯入py檔案,需要在這個資料夾裡寫乙個__init__.py的檔案,初始化一些資料或者直接是空檔案。
這樣就可以解決importerror:no module named **了
比如
呼叫的話可以在main裡這樣呼叫
from b import b
原文:原文
在 python 中,每乙個 py 檔案都稱為模組,每乙個具有 __init__.py 檔案的目錄稱為包。
python 的搜尋路徑是乙個列表,匯入模組時,python 會自動搜尋這個列表中的路徑,如果路徑中存在要匯入的模組檔案,則匯入成功。即只要模組或者包所在的目錄在 sys.path 中,就可以使用 import 模組或者 import 包來使用。
搜尋路徑,即sys.path,由一下幾部分構成
程式的主目錄
pythonpath目錄
標準鏈結庫目錄(/usr/local/lib/python2.7)
任何的 .pth 檔案的內容
所以可以修改 bashrc 中 的 pythonpath 變數,或者在 sys.path 新增路徑(**中暫時新增),將模組放到標準連線庫目錄下,在 sys.path 的某乙個路徑下增加 .pth 檔案(內容為模組所在的目錄)。
第二種方法如下:
目錄如下的檔案系統:
--test
--a.py
--bbb
--b.py
--__init__.py
結果如下:
可以看到將模組 a.py 和包 bbb 所在的 test 目錄加到 sys.path 中就可以找到他們了
python2 和python3在不同資料夾引入相應的py檔案的區別是前面不需要加.例如
python2用法 引入misc資料夾中的utils.py
import misc.utils as utils
python3用法 引入misc資料夾中的utils.py
import .misc.utils as utils
原文:同一資料夾
原文:不同資料夾
Python呼叫同一目錄下的模組
aa.py檔案如下 def aaout print it is an aa funcition.bb.py中需要呼叫aa.py檔案,cc.py為主檔案 1 若cc.py位於mydir資料夾內,則bb.py呼叫aa.py時需要在aa前面加上 例如,此時bb.py為 from.aa import aao...
關於pycharm在同一目錄下無法匯入 py檔案
如圖 在同乙個目錄下明明是存在相應的檔案的,在另乙個檔案中匯入卻報錯,編譯器提示沒有對應的模組。當前資料夾郵件,選中mark directory as sources root 此時資料夾如圖呈現藍色,表明此資料夾為資源資料夾。此時,在檔案中引入方式為直接import 注 1.在不同的資料夾路徑下,...
cmake 同一目錄下多個原始檔
接下來進入稍微複雜的例子 在同乙個目錄下有多個原始檔。在之前的目錄下新增2個檔案,testfunc.c和testfunc.h。新增完後整體檔案結構如下 testfunc.c內容如下 testfunc.c include include testfunc.h void func int data te...