导包时出现如下错误
from st_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 st_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:\Users\Administrator\Desktop\test_project
C:\Users\Administrator\Desktop
然后可以愉快的导包玩耍了。
rs232和ttl解决办法四:
既然python是通过查路径来包,那么我们可以配置环境变量,让python去我们指定的路径去,这样也是可以解决问题。
新建⽤户环境变量
设置名称和路径
其中,在“变量名”⽂本框内输⼊ PYTHONPATH,表明将要建⽴名为 PYTHONPATH 的环境变量;在“变量值”⽂本框内输⼊ .;d:\python_ module。注意,这⾥其实包含了两条路径(以分号;作为分隔符):
第⼀条路径为⼀个点(.),表⽰当前路径,当运⾏ Python 程序时,Python 将可以从当前路径加载模块;
第⼆条路径为 C:\Users\Acer\Desktop,当运⾏ Python 程序时,Python 将可以从桌⾯中加载模块。
然后点击“确定”,即成功设置 path 环境变量。此时,我们只需要将模块⽂件移动到和引⼊该模块的⽂件相同的⽬录,或者移动到 C:\Users\Acer\Desktop 路径下,该模块就能被成功加载。