zoukankan      html  css  js  c++  java
  • Python导包问题解决大全

    导包时出现如下错误

    from test_project.test_case.test_battal import TestBattal
    ModuleNotFoundError: No module named 'test_project'
    

    说明python执行时找不到这个包文件,所以无法调用。那么我们需要先知道python是如何搜索的。
    当一个名为 ***的模块被导入的时候,解释器首先寻找具有该名称的内置模块。如果没有找到,然后解释器从 sys.path 变量给出的目录列表里寻找名为 ***.py 的文件
    可以使用[sys.path]打印出python找包的路径

    import sys
    print(sys.path)
    


    解决办法一:
    将文件的目录临时追加到搜索目录中,因为目录写死,只适合临时解决问题

    #注意导包代码需要放在添加路径的代码后,否则依然无法找到包
    import sys
    import unittest
    import os
    
    sys.path.append(r'F:/教程/全栈测试开发课程/第26课时')
    # dir_path1 = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
    # sys.path.append(dir_path1)
    # print(dir_path1)
    
    from test_project.test_case.test_battal import TestBattal
    
    if __name__ == '__main__':
    
        # 根据给定的测试类,获取其中所有以test开头的测试方法,并返回一个测试套件
        suite1 = unittest.TestLoader().loadTestsFromTestCase(TestBattal)
    
        # 将多个测试类加载到测试套件中
        suite = unittest.TestSuite([suite1])
    
        # 设置verbosity = 2,可以打印出更详细的执行信息
        unittest.TextTestRunner(verbosity=2).run(suite)
    

    解决办法二:
    使用相对路径,临时添加到sys.path目录,包目录不依赖环境,随便更换环境都可执行。

    #注意导包代码需要放在添加路径的代码后,否则依然无法找到包
    dir_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
    sys.path.append(dir_path)
    


    解决办法三:
    直接写入到python系统路径,可以永久解决,但是路径也是写死的。
    使用pth文件,在 site-packages 文件中创建 .pth文件,将模块的路径写进去,一行一个路径,以下是一个示例,pth文件也可以使用注释:

    # write to apckage path
    C:UsersAdministratorDesktop	est_project
    C:UsersAdministratorDesktop
    


    然后可以愉快的导包玩耍了。

  • 相关阅读:
    BigBlueButton的安装
    Css学习总结(3)——CSS布局解决方案
    Git学习总结(14)——Git使用前的注意事项
    Java基础学习总结(83)——Java泛型总结
    ios-ASIHTTPRequest的Reachability可以监听网络,网络出现状况来不同的处理
    ios-ASIHTTPRequest下载与进度条以及用观察者模式来监听进度条属性
    iOS 常用英语翻译
    ZT 类模板的声明和实现是不能分离的
    ZT Shell 排序
    Java基础 之软引用、弱引用、虚引用 ·[转载]
  • 原文地址:https://www.cnblogs.com/huny/p/14071388.html
Copyright © 2011-2022 走看看