zoukankan      html  css  js  c++  java
  • 记一次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)如果导的包里还导入了其他的包,那么需要特别注意是否所有包都能找到路径
  • 相关阅读:
    ARC071F Infinite Sequence
    AGC043C Giant Graph
    ARC006E Addition and Subtraction Hard
    Codechef BALNET Balancing Network Revisited
    Gym102055H Game on the Tree
    Luogu P5320 [BJOI2019]勘破神机
    cookie和session
    jsp介绍
    request请求转换成对象。
    域对象 request
  • 原文地址:https://www.cnblogs.com/zzliu/p/11438914.html
Copyright © 2011-2022 走看看