pycharm和jupyter中的模块导入详解

一,如何将自己写的库,在其他模块中导入该库(jupyter和pycharm中一样的方式)

个人理解,在pycharm中的概念包(package),目录(Directory)和jupyter中的概念Folder(文件夹),在导入模块的时候,这三个所起的作用是一样的。

  1. 第一步,在系统中添加自己写的库的绝对路径(完整路径)
    绝对路径(思考):为什么我们程序中的绝对路径必须使用双反斜杠,因为其中一个反斜杠用作转义,如果只写一个反斜杠,那么就会将路径中的紧跟反斜杠的字母转义,也许输出就不是原来那个字符了。如果这个反斜杠后面紧跟的是另一个反斜杠,那么反斜杠的转义字符还是反斜杠,那么两个反斜杠的最终输出为一个反斜杠字符,路径中的其他字符就不会被转义,保持原样输出,C:\Users\自己电脑用户名\PycharmProjects\Debug_program\jj,就和我们平时理解的绝对路径看起来一样了。
import sys,os
path_module = os.path.abspath(os.path.join('C:\\Users\\自己电脑用户名\\PycharmProjects\\Debug_program\\jj'))
if path_module not in sys.path:
    sys.path.append(path_module)

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210128122512733.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU0MzQyNDcz,size_16,color_FFFFFF,t_70#pic_center
其中linear_regression模块中是这样引入模块Operation的
在这里插入图片描述

from .Operation import h
dd= h()
dd.j('man11111111111111111')

以上是在pycharm中这样导入情况。

  1. 接下来,在jupyter中其实是一样的

    这是最外层的目录结构:
    在这里插入图片描述

我们要在04_extensions文件中的Code模块中导入自定义的 lincoln库

import numpy as np
from numpy import ndarray
import sys,os
path_module = os.path.abspath(os.path.join('C:\\Users\\自己电脑用户名\\Desktop\\from scratch\\python_code\\lincoln'))
if path_module not in sys.path:
    sys.path.append(path_module)

from lincoln.layers import Dense
from lincoln.losses import SoftmaxCrossEntropy, MeanSquaredError
from lincoln.optimizers import Optimizer,SGD,SGDMomentum
from lincoln.activations import Sigmoid,Tanh,Linear,ReLU
from lincoln.network import NeuralNetwork
from lincoln.train import Trainer
from lincoln.utils import mnist
from lincoln.utils.np_utils import softmax

lincoln库中的目录结构如图:

在这里插入图片描述

注意 :lincoln库中的每一个模块的内部引用(这些模块都同一个目录下),都是通过+模块名的方式进行引用,例如:在dense模块中是这样引用base模块的

from .base import ParamOperation

这一点和pycharm中的方式一样

二, 一个package(包)内的模块如何访问另一个package中的模块

  1. 只需要在想要运行的模块中添加如下代码段:
mport sys,os
this_path = os.path.abspath(os.path.join('..'))
if this_path not in sys.path:
    sys.path.append(this_path)

注意 :两点表示可以访问本模块父目录中的其他包,以及其他包中的模块

  1. 如果两个模块都在该项目的根目录下,都是可以直接引用的,在jupyter和pycharm中都是一样的

在这里插入图片描述

  1. 在jupyter中(比如要在test1模块中导入test2模块):

在这里插入图片描述

  1. 如下的导入方式是错的,在jupyter和pycharm一样:
    在这里插入图片描述

在这里插入图片描述
注意 :除非外部调用可以这样写,内部互相调用这样写会报错。

三,jupyter和 pycharm中的区别

  • 在jupyter中无论两个同级模块的目录结构有多深,都不影响两个之间的互相引用,可以使用如下代码,导入都是没有问题的
from Operation import h
import Operation

注意 :被引用方必须是 .py文件,引用方是 .ipynb文件

  • 这里科普一下,在jupyter中如何将.ipynb文件转化为.py文件
  • File->Download as->Python(.py)
    在这里插入图片描述
  • 保存到你目前所在的模块的父文件夹中,使得两个处在同一级目录,再进行互相引用
  • 但是在pycharm中不同
  • 想要实现同级模块的调用需要加上最外层的包名(项目名下的第一级开始),依次通过.来逐层引用,比如:
    在这里插入图片描述
    注意 :不加外部的包名也可以实现,但是程序中会有红线,还是加上比较好。

如果概念那里理解的不对或者错误,请大家提出来,共同解决,谢谢!!!
如果帮助到你,记得点赞,评论哦~,谢谢读完!

四,参考博客:

python模块导入

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值