Python import自己的模块报错问题及解决
目录
- 一、同一文件夹下
- 但是这个时候在PyCharm中显示的是报错
- 在cmd命令中执行也是成功的
- 二、处于不同文件夹下面
- 三、找到本地库的路径,然后将文件拷进去即可
- 四、手动给python添加搜索路径
- 在这里说一句Python的包搜索路径
在实际使用python时,我们会将一些公共的东西写到一些基础模块中,供其他模块去调用,这时会去import自定义的一些基础模块,然后来导入。
自己写好了脚本,然后导入,导入的情况分为以下情况:
1. 运行的模块与需要调用自定义基础模块在同一文件夹下
2. 自定义模块与所需要调用自定义模块的文件不在同一文件夹下
一、同一文件夹下
这时的调用就较为简单了,直接导入即可
from deal_excel import copy_sheetWrite, row_commonWrite from deal_time import minus_date
但是这个时候在PyCharm中显示的是报错
但是运行程序是不会报错的
为了让在PyCharm中不报错,可以将包/文件夹设为 sources Root
现在就不报错了
在cmd命令中执行也是成功的
如果在模块前面加上包名(下面有个__init__.py)或者文件夹名
from msydwork.deal_excel import copy_sheetWrite, row_commonWrite from msydwork.deal_time import minus_date
PyCharm中显示不报错,运行程序成功
但是在cmd命令中运行却是失败的
所以对于处于同一文件夹下的情况:直接导入模块;为了PyCharm中不报错,将包/文件夹设为sources Root
二、处于不同文件夹下面
在PyCharm中是不会报错而且执行成功,是由于将deal_excel、deal_time所在包设为sources Root:
这时在cmd命令中是执行失败的
在PyCharm中是不会报错而且执行成功另外一种方法:导包时全路径(可以不设sources Root)
这时在cmd命令中也是报错的
为了让代码在cmd命令中执行成功,需要将自定义基础模块的文件夹/包添加到Python的库路径中。
三、找到本地库的路径,然后将文件拷进去即可
拷贝到\Lib\site-packages中
PyCharm中是不会报错而且执行成功
cmd命令中执行成功
四、手动给python添加搜索路径
在python安装目录的\Lib\site-packages文件夹中建立一个.pth文件,内容为自己写的库绝对路径
这个时候PyCharm中是会报错的,但是执行是成功的
cmd命令是执行成功的。
还有一种方法导入完整路径:
将根目录设为搜索路径
这时候不管在PyCharm还是cmd执行都是成功的
所以对于处于不同一文件夹下的情况:先手动给python添加搜索路径(根目录),然后直接导入模块全路径;
在这里说一句Python的包搜索路径
Python会在以下路径中搜索它想要寻找的模块:
1. 程序所在的文件夹
2. 标准库的安装路径
3. 操作系统环境变量PYTHONPATH所包含的路径
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
Python 中的 import 机制之实现远程导入模块
所谓的模块导入( import ),是指在一个模块中使用另一个模块的代码的操作,它有利于代码的复用. 在 Python 中使用 import 关键字来实现这个操作,但不是唯一的方法,还有 importlib.import_module() 和 __import__() 等. 也许你看到这个标题,会说我怎么会发这么基础的文章? 与此相反.恰恰我觉得这篇文章的内容可以算是 Python 的进阶技能,会深入地探讨并以真实案例讲解 Python import Hook 的知识点. 当然为了使文章更系统.
-
Python importlib模块重载使用方法详解
模块介绍 Python提供了importlib包作为标准库的一部分.目的就是提供Python中import语句的实现(以及__import__函数).另外,importlib允许程序员创建他们自定义的对象,可用于引入过程(也称为importer). 什么是imp? 另外有一个叫做imp的模块,它提供给Python import语句机制的接口.这个模块在Python 3.4中被否决,目的就是为了只使用importlib. 了解:模块的重载 考虑到性能的原因,每个模块只被导入一次,放入字典sys.m
-
关于python导入模块import与常见的模块详解
0.什么是python模块?干什么的用的? Java中如果使用abs()函数,则需要需要导入Math包,同样python也是封装的,因为python提供的函数太多,所以根据函数的功能将其封装在不同的module模块中.就这样的话,pthon提供的module还是海量的,所以除非使用某个模块里的某个函数时才会将其导入程序中.所以你使用某个函数前,要先知道他在哪个module里,然后将这个模块导入当前程序,然后才能调用这个模块里的函数. 当然 python的模块分为用户自定义的和系统提供的.Pyth
-
Python import模块的缓存问题解决方案
在使用django开发的平台中,支持用户自定义函数,但是每次用户进行修改编辑后,该模块内容已更改,然后重新导入该模块,但是Python 会认为"我已经导入了该模块,不需要再次读取该文件",所以更改将无效. 因此,每次更改文件的内容时,都必须退出并重新启动Django. 使用python开发后台服务程序的时候,每次修改代码之后都需要重启服务才能生效比较麻烦 要解决这个问题,有以下几种方式: 最简单.最有效的方法:重新启动 Django.但是,这也有缺点,特别是丢失了 django名称空间
-
Python中import导入不同目录的模块方法详解
测试的目录如下: root ├── module_root.py ├── package_a │ ├── child │ │ ├── __init__.py │ │ └── child_a.py │ ├── module.py │ └── module_a.py └── package_b └── module_b.py 每个文件中的内容如下(__init__.py文件可以为空): print(__name
-
python shell命令行中import多层目录下的模块操作
首先在文件夹中添加_init_.py文件,即使是空文件也可以,多层文件夹,每层文件夹中都要添加. 比如我要import,a文件夹中,b文件夹下的 c.py 我就需要在a,b文件夹中都添加_init_.py文件. 然后引入方式:import a.b.c 然后在调用c.py的函数时,直接c.f()是不行的,需要a.b.c.f(). 当然也可以先写 c = a.b.c,然后再c.f(). 补充知识:Python IDLE shell中引入模块 安装了Python之后,会自带一个Python IDLE,
-
Python import自己的模块报错问题及解决
目录 一.同一文件夹下 但是这个时候在PyCharm中显示的是报错 在cmd命令中执行也是成功的 二.处于不同文件夹下面 三.找到本地库的路径,然后将文件拷进去即可 四.手动给python添加搜索路径 在这里说一句Python的包搜索路径 在实际使用python时,我们会将一些公共的东西写到一些基础模块中,供其他模块去调用,这时会去import自定义的一些基础模块,然后来导入. 自己写好了脚本,然后导入,导入的情况分为以下情况: 1. 运行的模块与需要调用自定义基础模块在同一文件夹下 2. 自定
-
Python首次安装后运行报错(0xc000007b)的解决方法
错误提示如下: 其实这是一个挺常见的系统报错,缺乏VC++库. 我安装的是python3.5.2,这个版本需要的vc版本是2015的了,下载:Microsoft Visual C++ 2015 安装完后发现就正常了: 总结 通过以上的方法就能轻松解决首次安装Python后运行报错的问题,希望本文的内容对同样遇到这个问题的朋友们能有所帮助,如果有疑问大家可以留言交流,小编会尽快给大家回复.
-
Python multiprocess pool模块报错pickling error问题解决方法分析
本文实例讲述了Python multiprocess pool模块报错pickling error问题解决方法.分享给大家供大家参考,具体如下: 问题 之前在调用class内的函数用multiprocessing模块的pool函数进行多线程处理的时候报了以下下错误信息: PicklingError: Can't pickle <type 'function'>: attribute lookup __builtin__.function failed 查了下官方文档发现python默认只能pi
-
Python使用pickle模块报错EOFError Ran out of input的解决方法
本文实例讲述了Python使用pickle模块报错EOFError Ran out of input的解决方法.分享给大家供大家参考,具体如下: 遇到了 EOFError:Ran out of input 不到为什么这样,最后用捕获异常的办法解决掉了,暂时对程序本身没有啥影响,代码如下: # coding=utf-8 import pickle def usr_date(): try: with open('usr_date.pkl','rb') as f: return pickle.load
-
Python导包模块报错的问题解决
Python导包模块报错的问题 Moelimoe import报错No module named "xxx"的问题如何将指定目录作为项目根目录,让项目根目录下的包/模块都可以直接导入?(linux下)Python导入模块时,解释器如何定位模块:1.当前目录2.内置模块列表3.sys.path列表的目录 由于python没有定位到模块目录时出现的No module named "xxx"问题,大概有两种解决思路:1.在sys.path永久加入需要导入的模块的父目录:2
-
执行Python程序时模块报错问题
1. 在执行python程序时遇到 'ModuleNotFoundError: No module named 'xxxxx'' : 例如: 图片中以导入第三方的 'requests' 模块为例,此报错提示找不到requests模块.在python中,有的 模块是内置的(直接导入就能使用)有的模块是第三方的,则需要安装完成后才能导入使用,若未 安装直接导入使用就会出现上述报错!这里介绍最快的解决方法: 1)通过 pip (python软件包工具) 来安装所需要使用的第三方模块: 打开cmd输入
-
python 服务器运行代码报错ModuleNotFoundError的解决办法
一.问题描述 一段 Python 代码在本地的 IDE 上运行正常,部署到服务器运行后,出现了 ModuleNotFoundError: No module named 'xxx' 错误. 二.问题原因 在代码中引入了其他文件的包(自己写的包,非 pip 安装的),问题出在 import 那行语句. 错误的原因是因为路径的原因,服务器端的路径和我们本地的路径不一样显示. 三.解决示例 要解决这个问题,可以在自己代码的顶端加入以下代码: import sys import os sys.path.
-
解决安装python库时windows error5 报错的问题
python安装库时,有时候会报错windows error 5,可以尝试关闭所有使用python的编辑器.文件等,然后重新pip安装,如果还是不行,可以将报错最下层文件删除即可(如果不放心可以将该文件先备份),记录之~ windows error错误代码: windows error错误代码: 0操作成功完成. 1功能错误. 2系统找不到指定的文件. 3系统找不到指定的路径. 4系统无法打开文件. 5拒绝访问. 6句柄无效. 7存储控制块被损坏. 8存储空间不足,无法处理此命令. 9存储控制块
-
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
最新在学习Python的基础入门系列课程,今天学习到使用python 的内置库smtplib发送邮件内容. 使用Python发送邮件步骤简单: 创建SMTP连接 使用邮箱和密码登录SMTP服务器 创建邮件内容对象EmailMessage, 并使用set_content方法设置邮件内容 调用sendmail方法发送邮件 具体代码如下: import smtplib from email.message import EmailMessage # 定义SMTP邮件服务器地址 smtp_server
-
python安装dlib库报错问题及解决方法
问题描述 我是debain 系的linux系统没遇到这个问题,在centos系统遇到的 Collecting dlib Downloading http://mirrors.cloud.aliyuncs.com/pypi/packages/63/92/05c3b98636661cb80d190a5a777dd94effcc14c0f6893222e5ca81e74fbc/dlib-19.19.0.tar.gz (3.2MB) 100% |███████████████████████
随机推荐
- Python面向对象编程中的类和对象学习教程
- Linux虚拟机下mysql 5.7安装配置方法图文教程
- 一个简单的实现下拉框多选的插件可移植性比较好
- 浅谈angularjs中响应回车事件
- java高级排序之希尔排序
- 浅谈scrapy 的基本命令介绍
- python中readline判断文件读取结束的方法
- JS表单数据验证的正则表达式(常用)
- 解析PHP多种序列化与反序列化的方法
- android中写一个内部类来选择文件夹中指定的图片类型实例说明
- JavaScript中数组Array.sort()排序方法详解
- Nodejs如何搭建Web服务器
- 使用linux命令crontab间隔时间执行其它命令
- jQuery对象与DOM对象转换方法详解
- 基于Jquery+Ajax+Json实现分页显示附效果图
- input 日期选择功能的javascript代码
- FreeBSD6.0Release+Squid+Socks5服务器架设笔记
- Android设置Activity背景为透明style的简单方法(必看)
- JS实现小球的弹性碰撞效果
- 利用nginx + node在阿里云部署https的步骤详解