首页 > 其他分享 >调用自定义模块出现ModuleNotFoundError

调用自定义模块出现ModuleNotFoundError

时间:2024-07-03 17:33:11浏览次数:15  
标签:__ 文件 pycache 调用 自定义 模块 ModuleNotFoundError

产生问题的原因:IDE(pycharm)没有将自定义模块所在目录添加到工作目录中,导致在搜索目录中找不到要调用的模块。

Python会在以下路径中搜索它想要寻找的模块:

  • 程序所在的文件夹
  • 标准库的安装路径
  • 操作系统环境变量PYTHONPATH所包含的路径

解决方法1:在调用自定义模块前先将自定义模块/想要调用的函数所在的目录添加到工作目录中

例:trainer.py要调用data_loader.py中的load_trajs函数

--TrajGDM

    |--runners

          |--trainer.py

    |--utils

          |--data_loader.py
import sys
sys.path.append("..")
from utils.data_loader import load_trajs

或者

import sys
sys.path.append("../utils")
from data_loader import load_trajs

解决方法2:创建新项目,将调用程序与被调用程序放在同一项目中

pycharm会自动生成 .idea__pycache__两个文件夹,模块的调用与此有关,然后在程序中直接调用自定义的模块就可以了。

__pycache__是什么

  • __pycache__是出现在python3.2版本之后的特性,专门存放python编译文件和源文件
  • python2.X版本是没有__pycache__文件夹的,编译文件和源文件存放同目录
  • 如果当前目录只有运行的脚本main一个文件,执行python文件,则不会生成__pycache__
  • 如果当前main文件中没有import自定义模块,只import自带第三方库,不会产生__pycache__
  • __pycache__文件中是与py文件同名的以.cpython-37.pyc结尾的文件。(cpython代表c语言实现的python解释器,37代表3.7版本,pyc文件相当于python的编译文件,执行速度快于py文件)
  • 意义:第一次执行代码的时候,python解释器已经把编译的字节码放在__pycache__文件夹中,这样以后再次运行的话,如果被调用的模块未发生改变,那就直接跳过编译这一步,直接去__pycache__文件夹中去运行相关的*.pyc文件,大大缩短了项目运行前的准备时间。

标签:__,文件,pycache,调用,自定义,模块,ModuleNotFoundError
From: https://www.cnblogs.com/PangYuanyuan/p/18282150

相关文章

  • java模块——使用 47M 的java环境运行HelloWorld
    前言我们知道,运行java程序需要jre或jdk环境,但是现在的jdk安装包已经很大了,如果我们的程序很简单,并且需要把程序发送给其他没有jdk环境的人的运行要如何做呢?如何精简我们的程序包呢?从java9开始的模块功能为我们提供了解决方案。Java库设计者现在可以将代码清晰地划分为模块,这......
  • 模块一
    变量命名规范见名知义下划线命名法(推荐使用),驼峰命名法只能包含字母、数字和下划线,不能以数字开头不能使用保留字基本数据类型整型(integer)和浮点型(float)​ 不可变数据类型(immutable)字符串类型​ 通常使用一对单引号('')或双引号(""),三重引号('''或""")......
  • 企业微信hook,自定义工具,收发消息
    协议版本示例:    企业微信协议开发,配置服务器开启服务端,接口开发企业微信协议接口开发,接收发送json数据即可;接口调用:http请求      接下来拿uuid去调用其他接口即可例:发送位置      请求方式POSTContentType:”application/jso......
  • Django 自定义用户表
    当默认的用户表中字段不足以满足我们的业务需求时,可以自己继承和重写用户表,增加想要的字段。1.自定义用户表模型fromdjango.dbimportmodelsfromdjango.contrib.auth.modelsimportAbstractUser#重新定义用户表classUserProfile(AbstractUser):avatar=model......
  • 浅谈逻辑控制器之模块控制器
    浅谈逻辑控制器之模块控制器模块控制器(ModuleController)是一种高级逻辑控制器,它提供了一个强大的机制来复用和组织测试计划中的组件。本文档将深入介绍模块控制器的功能、配置方法及其应用场景。功能概述模块控制器允许用户在测试计划中引用另一个测试片段(通常是一个简......
  • 从零开始带你上手体验Sermant自定义插件开发
    本文分享自华为云社区《Sermant自定义插件开发上手体验》,作者:华为云开源。一、研究缘由由于目前我们所处的行业是汽车行业,项目上进行云服务的迁移时使用到了Sermant中的相关插件,为了加深对Sermant开发和运行机制的了解,我们从零开始体验Sermant自定义插件的开发。下面我们就Se......
  • YOLOv8改进 | 卷积模块 | 减少冗余计算和内存访问的PConv【CVPR2023】
    秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 ......
  • 自定义ORM框架
    手撕ORM框架1.创建Maven工程2.导入依赖<dependencies><!--引入jdbc的依赖--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><versi......
  • Dockerfile语法,自定义镜像
    我们一直在使用别人准备好的镜像,那如果我要部署一个Java项目,把它打包为一个镜像该怎么做呢?镜像结构要想自己构建镜像,必须先了解镜像的结构。镜像之所以能让我们快速跨操作系统部署应用而忽略其运行环境、配置,就是因为镜像中包含了程序运行需要的系统函数库、环境、配置、依......
  • Arduino 驱动烟雾传感器模块
    以下是使用ArduinoUnoR3驱动烟雾传感器模块的详细说明、接线图和代码示例。所需材料ArduinoUnoR3烟雾传感器模块(例如MQ-2)面包板和连接线接线步骤供电和地线连接:将ArduinoUno的5V引脚连接到烟雾传感器模块的VCC引脚。将ArduinoUno的GND引脚连接到烟雾传感器模块......