命令行下执行python找不包的解决方法
2019-01-28 17:11 _天枢 阅读(6244) 评论(0) 编辑 收藏 举报首先我们来了解一下,为什么会出现这样的问题,以及python搜索包的机制是怎么样的
1.为什么会出现这样的问题?
包是向下搜索机制.
2.为什么ide中执行没有报找不到包的问题?
python搜索机制,在ide中是以项目为根路径, 所以它的搜索机制是从项目根路径开始向下搜索.
3.为什么命令行执行时会报找不到包的错误?
这是因为命令行执行的时候,是以当前执行的py文件所在目录级别的下一级开始搜索.
这个可能有一点不好理解.
上个例子:
root
.......web(一级目录)
......sett(二级目录)
.......views(二级目录)
......service.py(二级目录) (这个命令行执行文件. 命令行运行时,提示找不到views以及sett中的包.)
.......包搜索级别(三级目录)
现在了解了问题的原因,那么怎么解决呢?有这么简单的两种办法?
1.在service.py文件中,导入sett包和views包之前加入增加root路径操作. root要增加到web父目录.
######################################################### #将根目录加入sys.path中,解决命令行找不到包的问题 import sys import os curPath = os.path.abspath(os.path.dirname(__file__)) rootPath = os.path.split(curPath)[0] sys.path.append(rootPath) #########################################################
以上增加到哪个级别要,根据实际情况,灵活运用. 其实目的就是指定一个顶级目录.来克服向下搜索包的问题.
2.在web平级别新建一个py文件. 然后将要执行的py文件导入进去即可.(并不需要作其它操作,看实际情况.)
from web import service
3.cmd命令行进行项目根目录,采用相对路径去执行该py文件。
例如:d盘下test_project项目下有个main.py文件
cmd cd d:\test_project ./main.py #相对执行
作 者:
天枢
出 处:
http://www.cnblogs.com/yhleng/
关于作者:专注于软件自动化测试领域。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者
直接私信我
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角
【
推荐】
一下。您的鼓励是作者坚持原创和持续写作的最大动力!