最近由于需要写一个脚本调用另一个文件里面的一个方法,试了很久都导包失败,特此记录一下

问题背景

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导包经历的更多相关文章

  1. python导包学习总结

    python初学者,对于导包纠结了不少时间,总结分享,持续前进~ Python导包的两种方法: 1.1  from 包.模块  import 方法名,调用时直接使用方法名() 1.2  from 包. ...

  2. python导包显示No module named XXX问题

    最近用sublime text写python脚本,在导包是一直显示No module named XXX. 问题描述: 首先文件夹的目录结构如下: count.py文件,代码如下: #coding=u ...

  3. python导包语句执行

    今天在做项目中遇到一个问题,在first_page中引用login的登录方法,第一次执行登录可以正常登录,登录成功后,再选择返回主菜单,回到上个页面,再选择登录时报错“login_class isno ...

  4. python导包问题,这一篇就够了

    解决办法: 将项目所在的根目录添加到sys.path中 在入口文件中加入如下代码: import sys import os # 将 项目的根目录添加到sys.path中 BASE_DIR = os. ...

  5. python导包

    我们将完成特定功能的代码块放在一个.py结尾的文件中,这个文件被称为模块.在这个模块中可能包含变量,函数,类等等内容. 当我们从外部需要用到这个模块时,就需要将这个模块导入到我们当前环境.导入方式有以 ...

  6. python导包路径的修改

    1.sys os 模块 import sys import os 2.查看默认的导包路路径: print(sys.path) 3.路径拼接 os.path.join(url, 'apps')) 4.追 ...

  7. python导包一不小心就入坑(常用解决办法)

    常见导包报错: - ImportError:No module named - SystemError: Parent module '' not loaded, cannot perform rel ...

  8. 太酷炫了!!我会Python 导包八种方法,你呢?

    1. 直接 import 人尽皆知的方法,直接导入即可 >>> import os >>> os.getcwd() '/home/wangbm'复制代码 与此类似的 ...

  9. 记一次Python爬虫开发经历

    为啥要做Python爬虫,是因为我去找电影的某个网站有点坑,它支持tag标签查询自己喜欢的电影,但是不支持双标签或者三标签查询.由于一个电影对应多种类型(tag),这就意味着,我需要进入这个电影介绍界 ...

随机推荐

  1. hdoj2196(树形dp,树的直径)

    题目链接:https://vjudge.net/problem/HDU-2196 题意:给出一棵树,求每个结点可以到达的最远距离. 思路: 如果求得是树上最长距离,两次bfs就行.但这里求的是所有点的 ...

  2. Spring系列七:Spring 自动装配

    相思相见知何日?此时此夜难为情. 概述 在Spring框架中,在配置文件中声明bean的依赖关系是一个很好的做法,因为Spring容器能够自动装配协作bean之间的关系.这称为spring自动装配. ...

  3. print格式化输出(format)

    一. print格式化输出,以及使用format控制 字符串的格式化方法分为两种,分别为占位符(%)和format方式.占位符方式在Python2.x中用的比较广泛,随着Python3.x的使用越来越 ...

  4. 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 ...

  5. 关于KMP中求next数组的思考【转】

    文章转自 http://www.tuicool.com/articles/yayeIbe.这是我看到关于求next数组,解释最好的一篇文章!!!!!!! KMP的next数组求法是很不容易搞清楚的一部 ...

  6. MySQL中的DML、DQL和子查询

    一.MySQL中的DML语句 1.使用insert插入数据记录: INSERT INTO `myschool`.`student` (`studentNo`, `loginPwd`, `student ...

  7. O053、Attach Volume 操作(Part I)

    参考https://www.cnblogs.com/CloudMan6/p/5624930.html   Volume的最主要用途是做为虚拟磁盘提供给Instance使用.Volume是通过 Atta ...

  8. Java 实现 海康摄像头抓拍图像 Windows、Linux

    先抱怨一下,打死都想不到,海康的摄像头SDK居然是一个Java类,还有必须的两个jar包(jna.jar,examples.jar).鬼能想得到会这么命名. 下面开始吧. Windows 把从官网下载 ...

  9. css高度居中

    1.已知元素高度 // 子盒子 #div1{ width:200px; height:200px; position: absolute; //父元素需要相对定位 top: 50%; left: 50 ...

  10. 去重复的sql(Oracle)

    1.利用group by 去重复 2.可以利用下面的sql去重复,如下 1) select id,name,sex from (select a.*,row_number() over(partiti ...