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.mzph.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大…