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

问题背景

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)如果导的包里还导入了其他的包,那么需要特别注意是否所有包都能找到路径

最新文章

  1. Linux环境变量设置
  2. Git命令之资源
  3. Java编程中“为了性能”尽量要做到的一些地方
  4. VideoView 播放资源目录raw下的视频
  5. JavaScript Number 对象 Javascript Array对象 Location 对象方法 String对象方法
  6. Cas_Server端安装
  7. Scala Error: error while loading Suite, Scala signature Suite has wrong version expected: 5.0 found: 4.1 in Suite.class
  8. 一个sql的优化
  9. Android 初了解
  10. Haskell学习-functor
  11. v-for 在 VSCode 中出现 Elements in iteration expect to have 'v-bind:key' directives.
  12. Linux环境上部署Flask
  13. angularjs-select2的使用
  14. Linux运维之shell脚本进阶篇
  15. Kubernetes 架构图
  16. mycat 单库分表
  17. 在ListBoxItem的样式中的button传参,把当前选中项传递到命令的方法
  18. 2018.09.30 bzoj2223: [Coci 2009]PATULJCI(主席树)
  19. Angular总结一:环境搭建
  20. SSMdemo:租房管理系统

热门文章

  1. # Python3微博爬虫[requests+pyquery+selenium+mongodb]
  2. JavaWeb应用系统开发实训任务(一)
  3. Spring Boot源码分析-启动过程
  4. APOC官网触发器示例执行后Web页面一直转圈
  5. [C#.net]xlApp.Workbooks.Open打开无法远程访问
  6. unity 打包Error:WebException: The remote server returned an error: (403) Forbidden.
  7. std::list保存大量数据时,类型即是无析构函数,该list析构时会占用大量CPU
  8. vue打开到新页面,并传递参数
  9. mybatis抛出异常(java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1)
  10. javascript学习方法指南