记一次Python导包经历
最近由于需要写一个脚本调用另一个文件里面的一个方法,试了很久都导包失败,特此记录一下
问题背景
1)脚本文件为send_reward.py,要调用public_model_func.py里面的一个类方法
2)public_model_func.py里面导入了项目的其他包,其导包方式为from src.xxx.xxx import xxx,其中src为项目代码的根目录
3)项目处于运行状态,脚本是后续自己写的
### 解决过程
1)尝试在send_reward.py里面使用from src.xxx.xxx import xxx导包,结果提示找不到包
2)将send_reward.py放入与public_model_func.py同级目录下,使用from . import public_model_func,结果还是提示找不到包
3)想到可能是没有把路径加到`sys.path`里面,因此在`send_reward.py`的前面加上以下几行代码
```python
import sys
sys.path.append("/xxx/xxx/src/xxx/xxx") # public_model_func.py的上一级目录,从根目录开始
```
但是这样可以导入public_model_func.py,但是加载public_model_func.py时会导入其他的包,这时又会报错
4)考虑到public_model_func.py里面都是`from src.xxx.xxx import xxx`,因此考虑将src的**上级目录**放入sys.path,即
```python
import sys
sys.path.append("/xxx/xxx") # src的上级目录,注意最后面没有/
```
问题完美解决
### 小结
1)导包时要将导包路径加到`sys.path`里面
2)如果导的包里还导入了其他的包,那么需要特别注意是否所有包都能找到路径
记一次Python导包经历的更多相关文章
- python导包学习总结
python初学者,对于导包纠结了不少时间,总结分享,持续前进~ Python导包的两种方法: 1.1 from 包.模块 import 方法名,调用时直接使用方法名() 1.2 from 包. ...
- python导包显示No module named XXX问题
最近用sublime text写python脚本,在导包是一直显示No module named XXX. 问题描述: 首先文件夹的目录结构如下: count.py文件,代码如下: #coding=u ...
- python导包语句执行
今天在做项目中遇到一个问题,在first_page中引用login的登录方法,第一次执行登录可以正常登录,登录成功后,再选择返回主菜单,回到上个页面,再选择登录时报错“login_class isno ...
- python导包问题,这一篇就够了
解决办法: 将项目所在的根目录添加到sys.path中 在入口文件中加入如下代码: import sys import os # 将 项目的根目录添加到sys.path中 BASE_DIR = os. ...
- python导包
我们将完成特定功能的代码块放在一个.py结尾的文件中,这个文件被称为模块.在这个模块中可能包含变量,函数,类等等内容. 当我们从外部需要用到这个模块时,就需要将这个模块导入到我们当前环境.导入方式有以 ...
- python导包路径的修改
1.sys os 模块 import sys import os 2.查看默认的导包路路径: print(sys.path) 3.路径拼接 os.path.join(url, 'apps')) 4.追 ...
- python导包一不小心就入坑(常用解决办法)
常见导包报错: - ImportError:No module named - SystemError: Parent module '' not loaded, cannot perform rel ...
- 太酷炫了!!我会Python 导包八种方法,你呢?
1. 直接 import 人尽皆知的方法,直接导入即可 >>> import os >>> os.getcwd() '/home/wangbm'复制代码 与此类似的 ...
- 记一次Python爬虫开发经历
为啥要做Python爬虫,是因为我去找电影的某个网站有点坑,它支持tag标签查询自己喜欢的电影,但是不支持双标签或者三标签查询.由于一个电影对应多种类型(tag),这就意味着,我需要进入这个电影介绍界 ...
随机推荐
- hdoj2196(树形dp,树的直径)
题目链接:https://vjudge.net/problem/HDU-2196 题意:给出一棵树,求每个结点可以到达的最远距离. 思路: 如果求得是树上最长距离,两次bfs就行.但这里求的是所有点的 ...
- Spring系列七:Spring 自动装配
相思相见知何日?此时此夜难为情. 概述 在Spring框架中,在配置文件中声明bean的依赖关系是一个很好的做法,因为Spring容器能够自动装配协作bean之间的关系.这称为spring自动装配. ...
- print格式化输出(format)
一. print格式化输出,以及使用format控制 字符串的格式化方法分为两种,分别为占位符(%)和format方式.占位符方式在Python2.x中用的比较广泛,随着Python3.x的使用越来越 ...
- selenium 鼠标,键盘操作
1.打开和关闭网页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #!/usr/bin/env python # -*- coding:u ...
- 关于KMP中求next数组的思考【转】
文章转自 http://www.tuicool.com/articles/yayeIbe.这是我看到关于求next数组,解释最好的一篇文章!!!!!!! KMP的next数组求法是很不容易搞清楚的一部 ...
- MySQL中的DML、DQL和子查询
一.MySQL中的DML语句 1.使用insert插入数据记录: INSERT INTO `myschool`.`student` (`studentNo`, `loginPwd`, `student ...
- O053、Attach Volume 操作(Part I)
参考https://www.cnblogs.com/CloudMan6/p/5624930.html Volume的最主要用途是做为虚拟磁盘提供给Instance使用.Volume是通过 Atta ...
- Java 实现 海康摄像头抓拍图像 Windows、Linux
先抱怨一下,打死都想不到,海康的摄像头SDK居然是一个Java类,还有必须的两个jar包(jna.jar,examples.jar).鬼能想得到会这么命名. 下面开始吧. Windows 把从官网下载 ...
- css高度居中
1.已知元素高度 // 子盒子 #div1{ width:200px; height:200px; position: absolute; //父元素需要相对定位 top: 50%; left: 50 ...
- 去重复的sql(Oracle)
1.利用group by 去重复 2.可以利用下面的sql去重复,如下 1) select id,name,sex from (select a.*,row_number() over(partiti ...