Python-import導入上級 本級 目錄文件

假設有如下目錄結構:

-- dir0| file1.py| file2.py| dir3| file3.py| dir4| file4.py

dir0文件夾下有file1.py、file2.py兩個文件和dir3、dir4兩個子文件夾,dir3中有file3.py文件,dir4中有file4.py文件。

1.導入同級模塊

python導入同級模塊(在同一個文件夾中的py文件)直接導入即可。

import xxx

如在file1.py中想導入file2.py,注意無需加后綴".py":

import file2
#使用file2中函數時需加上前綴"file2.",即:
#file2.fuction_name()

有的時候使用import net 不能正常使用 顯示沒有該模塊 這時候在模塊前面加上一個. 表示在同級目錄中。

這個時候用

from . import net
from .preprocess import Preprocess

2.導入下級模塊

導入下級目錄模塊也很容易,需在下級目錄中新建一個空白的__init__.py文件再導入:

from dirname import xxx
如在file1.py中想導入dir3下的file3.py,首先要在dir3中新建一個空白的__init__.py文件。

-- dir0| file1.py| file2.py| dir3| __init__.py| file3.py| dir4| file4.py

再使用如下語句:

plan A
from dir3 import file3
或是plan B
import dir3.file3
import dir3.file3 as df3

但使用第二種方式則下文需要一直帶著路徑dir3書寫,較為累贅,建議可以另起一個別名。

3.導入上級模塊

要導入上級目錄下模塊,可以使用sys.path:

import sys 
sys.path.append("..") 
import xxx 

如在file4.py中想引入import上級目錄下的file1.py:

import sys 
sys.path.append("..") 
import file1

sys.path的作用:當使用import語句導入模塊時,解釋器會搜索當前模塊所在目錄以及sys.path指定的路徑去找需要import的模塊,所以這里是直接把上級目錄加到了sys.path里。

而且這個時候只需要用一次就行了,不需要在每個模塊中都使用,因為上級目錄已經加到路徑列表中了。

打印一下路徑列表

print(sys.path)

在這里插入圖片描述

“…”的含義:等同于linux里的‘…’,表示當前工作目錄的上級目錄。實際上python中的‘.’也和linux中一致,表示當前目錄。

4.導入隔壁文件夾下的模塊

如在file4.py中想引入import在dir3目錄下的file3.py。

這其實是前面兩個操作的組合,其思路本質上是將上級目錄加到sys.path里,再按照對下級目錄模塊的方式導入。

同樣需要被引文件夾也就是dir3下有空的__init__.py文件。

-- dir| file1.py| file2.py| dir3| __init__.py| file3.py| dir4| file4.py

同時也要將上級目錄加到sys.path里:

import sys
sys.path.append("..")
from dir3 import file3

5.常見錯誤及import原理:

在使用直接從上級目錄引入模塊的操作時:

from .. import xxx
經常會報錯:

ValueError: attempted relative import beyond top-level package
這是由于相對導入時,文件夾實質上充當的是package,也就是包的角色(比如我們常用的numpy、pandas都是包)。如果python解釋器沒有認同該文件夾是package,那么這就是一個普通的文件夾,無法實現相對導入。

文件夾作為package需要滿足如下兩個條件:

文件夾中必須存在有__init__.py文件,可以為空。
不能作為頂層模塊來執行該文件夾中的py文件。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535222.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535222.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535222.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python 判斷數據類型,是否與已知相同

1. 判斷數據類型type(x) x torch.randint(1,2,[2,2]) print(type(x))<class torch.Tensor>2.判斷是否與已知一樣 isinstance(x,type) 函數isinstance 作用是判斷類型是否與已知一樣 print(isinstance(x,torch.Tensor))Truex[] print(isinstance(x,lsit)True

Pytorch RuntimeERROR: Given groups=1 weights of size [256,64,1,1] expected input[1,16,256,256] to

錯誤 Pytorch RuntimeERROR: Given groups1 weights of size [256,64,1,1] expected input[1,16,256,256] to have 64 channels, but got 16 channels instead.錯誤分析 Given groups1 weights of size [256,64,1,1] 代表卷積核的channel 大小為 64->256 &#xff0c;大…

pytorch 訓練過程學習率設置衰減

設置學習率衰減 if (self.e1) > (self.num_epochs - self.num_epochs_decay):g_lr - (self.g_lr / float(self.num_epochs_decay))d_lr - (self.d_lr / float(self.num_epochs_decay))self.update_lr(g_lr, d_lr)print(Decay learning rate to g_lr: {}, d_lr:{}..format(g_…

ModuleNotFoundError: No module named ‘torch.utils.serialization‘

這是因為在torch新版本中刪除了load_lua 解決辦法:首先命令行運行pip install torchfile安裝torchfile,然后將utils.py第7行中的from torch.utils.serialization import load_lua改為import torchfile,最后將utils.py第90行中的load_lua改為torchfile.load

使用conda/pip安裝pytorch 0.3.1教程(mac/windos/linux) pytorch 0.2.1

#寫的很好 https://ptorch.com/news/145.html conda create -n torch_0.3.1 # 創建一個新的環境 pip3 install http://download.pytorch.org/whl/cpu/torch-0.3.1-cp36-cp36m-linux_x86_64.whl pip install torchvision0.2.1安裝torch0.2.1 conda create -n torch_0.2.1 # …

Latex的表格注釋

調用threeparttable包 在文檔的最前面加入以下命令&#xff1a; \usepackage{threeparttable}在表格處插入命令 \begin{table*} \label{table:number} \centering \caption{....} \begin{threeparttable} \begin{tabular}{lc}\hlineA & B \\\hline A & B\tnote{*} \…

Latex 插入目錄 設置首頁頁碼為空

插入目錄 \begin{document} \maketitle\tableofcontents \newpage # 從下一頁開始\end{document}\maketitle \tableofcontents \textbf{\ \\\\\\\\\\$*$ means that it is a supplementary experimental results for the manuscript.\\ $**$ means that it is a newly added …

Pytorch GPU內存占用很高,但是利用率很低

1.GPU 占用率&#xff0c;利用率 輸入nvidia-smi來觀察顯卡的GPU內存占用率&#xff08;Memory-Usage&#xff09;&#xff0c;顯卡的GPU利用率&#xff08;GPU-util&#xff09; GPU內存占用率&#xff08;Memory-Usage&#xff09; 往往是由于模型的大小以及batch size的大…

sambd ERROR: job for smbd.service failed

sudo service smbd restart 出現如下問題 解決方案 sudo cp /usr/share/samba/smb.conf /etc/sambs這樣就可以重新啟動了

Pytorch 反向傳播實例,梯度下降

1.手寫更新權重 #求 y w*x x_data [1.0,2.0,3.0,4.0] y_data [2.0,4.0,6.0,8.0]w 1.0def grad(x,y): #計算梯度# (y^ - y)^2 &#xff08;wx -y)^2 grad:2w(wx-y)return 2 * x * (w * x - y)def loss(x,y):return (y - (w * x)) * (y - (w * x))for i in range(30):for …

python環境快速安裝opencv 離線版安裝

1. 進入清華大學opencv Python庫&#xff1a; https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/opencv-python/ 下載適合自己版本的opencv 怎么判斷是否適合自己的環境&#xff1f; 只需要輸入 pip install opencv-python # 太慢了 下載 我們不用它然后在網站下載…

Pytorch離線安裝 matlibplot

因為使用pip安裝太慢了&#xff0c;所以我們使用離線安裝包來安裝。 1.下載安裝包 https://pypi.org/project/matplotlib/#files 選擇自己合適的安裝包 2. cd到指定的文件夾 然后 pip install .whl即可

Linux 服務器停止當前運行的程序,實驗,代碼

Nvidia-smi 選擇對應的PID 程序 sudo kill -9 11245就能殺死當前運行的實驗

Normalization 歸一化方法 BN LN IN GN

1.分類 BN是在batch上&#xff0c;對N、H、W做歸一化&#xff0c;而保留通道 C 的維度。BN對較小的batch size效果不好。BN適用于固定深度的前向神經網絡&#xff0c;如CNN&#xff0c;不適用于RNN&#xff1b;LN在通道方向上&#xff0c;對C、H、W歸一化&#xff0c;主要對RN…

Linux 服務器拷貝遠程文件 SCP

1.復制文件 &#xff08;1&#xff09;將本地文件拷貝到遠程 &#xff08;有時候權限不允許&#xff09; scp 文件名 用戶名計算機IP或者計算機名稱:遠程路徑 scp /root/install.* root192.168.1.12:/usr/local/src&#xff08;2&#xff09;從遠程將文件拷回本地 scp 用戶名…

Pytorch: model.eval(), model.train() 講解

文章目錄1. model.eval()2. model.train()兩者只在一定的情況下有區別&#xff1a;訓練的模型中含有dropout 和 batch normalization 1. model.eval() 在模型測試階段使用 pytorch會自動把BN和DropOut固定住&#xff0c;不會取每個batchsize的平均&#xff0c;而是用訓練好的…

Job for smbd.service failed because the control process exited with error code. See “systemctl statu

錯誤 $ sudo service smbd restartJob for smbd.service failed because the control process exited with error code. See "systemctl status smbd.service" and "journalctl -xe" for details.$ systemctl status smbd.servicesmbd.service - Samba SM…

RuntimeError: one of the variables needed for gradient computation has been modified by an inplace o

問題 RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation: [torch.cuda.FloatTensor [4]] is at version 1; expected version 0 instead 分析 nn.relu(True) # 這個引起的問題原來的變量被替換掉了&#xff…

batchsize大小對訓練速度的影響

1.batchsize越大 是不是訓練越快&#xff1f; GPU :一塊2080Ti 平臺&#xff1a;pytorch cuda 圖片數量&#xff1a;2700 batchsize一個圖片處理時間GPU內存占用GPU算力使用一個epoch 所用時間10.117s2.5G20%2700 * 0.0117 318s50.516s8G90%2700 * 0.516/5 279s batchsize大…