pycharm和jupyter中的模块导入详解

pycharm和jupyter中的模块导入详解一 如何将自己写的库 在其他模块中导入该库 jupyter 和 pycharm 中一样的方式 个人理解 在 pycharm 中的概念包 package 目录 Directory 和 jupyter 中的概念 Folder 文件夹 在导入模块的时候 这三个所起的作用是一样的 第一步 在系统中添加自己写的库的绝对路径 完整路径 绝对路径 思考 为什么我们程序中的绝对路径必须使用双反斜杠 因为其中一个反斜杠用作转义 如果只写一个反斜杠 那么就会将路径中的紧跟反斜杠的字母转义 也许输出就不是原来那个字符了 如果这个反

一,如何将自己写的库,在其他模块中导入该库(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) 
from .Operation import h dd= h() dd.j('man') 

以上是在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模块导入

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/173508.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月27日 上午8:39
下一篇 2026年3月27日 上午8:39


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号