命令行下执行python找不包的解决方法
首先我们来了解一下,为什么会出现这样的问题,以及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 #相对执行
命令行下执行python找不包的解决方法的更多相关文章
- 命令行下查看python和numpy的版本和安装位置
命令行下查看python和numpy的版本和安装位置 1.查看python版本 方法一: python -V 注意:‘-V‘中‘V’为大写字母,只有一个‘-’ 方法二: python --versio ...
- MySQL命令行下执行.sql脚本详解
本文主要介绍一个在MySQL命令行下执行脚本文件的例子,通过这个例子让我们来了解一下在命令行下MySQL是怎样执行脚本的吧.现在我们开始介绍这一过程. 1.首先编写sql脚本,保存为的:book.sq ...
- 在linux命令行下执行php 程序
如何在linux命令行下,执行php程序. 例子 打印当前时间 php -r "echo time()" 随机输出一个数字 php -r "echo rand(1,20) ...
- 在mysql命令行下执行sql文件
***********在mysql命令行下执行sql文件*********** C:\Windows\system32>cd E:\MySQL\mysql-5.7.16-winx64\bin / ...
- MySQL命令行下执行sql文件(sql脚本)
在mysql命令行下执行sql文件(sql脚本) mysql> source sql文件完整路径 如: mysql> source D:\\MySQL\\create.sql 文 ...
- 【转】Ubuntu命令行下安装、卸载、管理软件包的方法
原文网址:http://oss.org.cn/html/47/n-67447.html 一.Ubuntu中软件安装方法 1.APT方式 (1)普通安装:apt-get install softname ...
- Ubuntu命令行下安装、卸载、管理软件包的方法
一.Ubuntu中软件安装方法 1.APT方式 (1)普通安装:apt-get install softname1 softname2 -; (2)修复安装:apt-get -f install so ...
- Ubuntu Server 命令行下显示中文乱码(菱形)解决办法
如果Ubuntu Server在安装过程中,选择的是中文(很多新手都会在安装时选择中文,便于上手),这样在完成安装后,系统默认的语言将会是中文zh_CN.UTF- 8.但问题是我们安装的是服务器,只需 ...
- java含多个包的命令行下执行
C:\Users\liyang\Desktop\BAE\Baidu-BCS-SDK-Java-1.4.5>java -classpath(可以cp简写) bcs-sdk-java_1.4.5.j ...
随机推荐
- SQL允许脏读WITH(NOLOCK)
使用WIHT(NOLOCK)有利也有弊,所以在决定使用之前,你一定需要了解清楚WITH(NOLOCK)的功能和缺陷,看其是否适合你的业务需求,不要觉得它能提升性能,稀里糊涂的就使用它. --事务未提交 ...
- IDEA安装ini4idea插件
参见https://blog.csdn.net/lintianlin/article/details/80050309
- URL 链接中 井号#、问号?、连接符& 分别有什么作用?
在一个 URL 中可以包含很多的内容,其中不仅仅是包含 26 个英文字母,10 个罗马数字,中文汉字,还可以拥有井号“#”.问号“?”.连接符“&”等三种最常见的符号,那么这些符号在网站中都有 ...
- Manacher算法学习笔记 | LeetCode#5
Manacher算法学习笔记 DECLARATION 引用来源:https://www.cnblogs.com/grandyang/p/4475985.html CONTENT 用途:寻找一个字符串的 ...
- 使用JS获取input值
获取input值,设置input值 可以使用 $(".class") $("#id") $("input[name='name']") re ...
- 在线协作开发工具apizza使用方法(https://apizza.net/projects)
1. 2. 3. 4. 5. 谷歌浏览器点击选择“更多工具”->“扩展程序” 6. 将刚才解压好的文件夹拖到这个位置即可
- 太原面经分享:如何用js实现返回斐波那契数列的第n个值的函数
面试攒经验,let's go! 值此高考来临之际,闲不住的我又双叒叕出发去面试攒经验了,去了公司交待一番流程后,面试官甩给了我一张A4纸,上面写着一道js算法笔试题(一开始我并不知道这是在考察js算法 ...
- socket(套接字)初使用
socket层 socket:是应用层与TCP/IP协议通信的中间软件抽象层,是一组接口,在设计模式中,socket其实就是一个门面模式,它把复杂的TCP/IP协议隐藏在socket接口后面. 基于T ...
- 如何为Windows XP / Windows7-32bit / Windows7-64bit安装capicom.dll
原文: http://164.100.181.16/ssdgsap/RegisterDLL.htm 1.根据操作系统的要求下载相应的文件夹安装capicom.dll for Windows XP的步骤 ...
- Codeforces 785D - Anton and School - 2 - [范德蒙德恒等式][快速幂+逆元]
题目链接:https://codeforces.com/problemset/problem/785/D 题解: 首先很好想的,如果我们预处理出每个 "(" 的左边还有 $x$ 个 ...