解决python调用自己文件函数/执行函数找不到包问题


Posted in Python onJune 01, 2020

写python程序的时候很多人习惯创建一个utils.py文件,存放一些经常使用的函数,方便其他文件调用,同时也更好的管理一些通用函数,方便今后使用。或是两个文件之间的class或是函数调用情况。

就像下面的工程目录一样:

工程目录

Project\
 ...
 src\
 main.py
 utils.py
 test.py
 ...

python调用其他文件中的函数

在main.py文件中加入一下语句即可调用utils.py下面的函数:‘'

import src.utils as utils
X, y = utils.load_data()

开发python的习惯使用IDE,比如pycharm,pydev等,在这些IDE中使用方便,可以轻松的更换解释器,在文件右键运行即可,没有问题。使用上述的方法也不会有其它问题。

可是当你现在本地写code,然后发现本地计算资源不够,想到了服务器,服务器是ubuntu的。

于是乎用ssh admin@219.224.30.xxx.登录服务器,然后选择一个本人的文件工程目录下面用scp命令将本地代码拷贝过去,或是用git clone https://github.com/xxx将代码仓库代码拷贝到服务器上,然后cd Project/,敲下python main.py,发现报出No module named ‘src'.错误,于是上网上搜代码,有人给出解决方案“把工程目录里面加入sys就行了”

import sys
sys.path.append('D:/pythonworkspace')

没错在本地是能解决问题,但是换个别的盘呢?又得改代码。在服务器上呢,What? D盘?ubuntu哪来的D盘?还得改代码

原因

在文件中写下面两句python代码

import sys
print(sys.path)

分别用pycharm和shell执行,发现两个输出的是不一样的:

pycharm输出:

D:\\pythonworkspace\\Project

shell输出:

D:\\pythonworkspacr\\Projecrt\\src

有人觉得,原来是这个样子,于是乎cd ..,然后python src/test.py,可是发现还是会报错,找不到module。

原因是pycharm执行文件的时候路径是整个工程下的路径,而shell执行文件的时候是执行文件所在的路径,不是shell所在的文件路径。

解决

所以正确的姿势是这个样子

import sys
sys.path.append("..")

先把相对路径转换成绝对路径,然后将绝对路径加入系统变量中就行了。这样就可以在不用的场景下使用python命令,和灵活的使用其他文件下的函数了,不会报错。如果包含多级目录就继续加sys.path.append("../..")

以上这篇解决python调用自己文件函数/执行函数找不到包问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python使用scrapy采集时伪装成HTTP/1.1的方法
Apr 08 Python
Python爬虫DNS解析缓存方法实例分析
Jun 02 Python
Python实现统计代码行的方法分析
Jul 12 Python
Python+selenium 获取一组元素属性值的实例
Jun 22 Python
对python产生随机的二维数组实例详解
Dec 13 Python
Python pip替换为阿里源的方法步骤
Jul 02 Python
python多进程下实现日志记录按时间分割
Jul 22 Python
Python基于类路径字符串获取静态属性
Mar 12 Python
pygame用blit()实现动画效果的示例代码
May 28 Python
带你学习Python如何实现回归树模型
Jul 16 Python
Python学习笔记之装饰器
Aug 06 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
Jan 09 Python
Python如何在循环内使用list.remove()
Jun 01 #Python
IntelliJ 中配置 Anaconda的过程图解
Jun 01 #Python
解决python中import文件夹下面py文件报错问题
Jun 01 #Python
浅谈Python中文件夹和python package包的区别
Jun 01 #Python
python 通过文件夹导入包的操作
Jun 01 #Python
Python matplotlib可视化实例解析
Jun 01 #Python
python代码如何注释
Jun 01 #Python
You might like
PHP 存储文本换行实现方法
2010/01/05 PHP
通过具体程序来理解PHP里面的抽象类
2010/01/28 PHP
php eval函数用法 PHP中eval()函数小技巧
2012/10/31 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
jQuery图片的展开和收缩实现代码
2013/04/16 Javascript
详细介绍8款超实用JavaScript框架
2013/10/25 Javascript
详解Javascript动态操作CSS
2014/12/08 Javascript
JavaScript设计模式之单件模式介绍
2014/12/28 Javascript
jquery文档操作wrap()方法实例简述
2015/01/10 Javascript
jQuery判断一个元素是否可见的方法
2015/06/05 Javascript
jQuery插件pagination实现无刷新分页
2016/05/21 Javascript
初识简单却不失优雅的Vue.js
2016/09/12 Javascript
本地存储localStorage用法详解
2017/07/31 Javascript
浅谈node中的exports与module.exports的关系
2017/08/01 Javascript
vue2.0 axios跨域并渲染的问题解决方法
2018/03/08 Javascript
nodejs 十六进制字符串型数据与btye型数据相互转换
2018/07/30 NodeJs
React router动态加载组件之适配器模式的应用详解
2018/09/12 Javascript
微信小程序实现页面浮动导航
2019/01/28 Javascript
基于js实现抽红包并分配代码实例
2019/09/19 Javascript
jQuery 函数实例分析【函数声明、函数表达式、匿名函数等】
2020/05/19 jQuery
js实现小球在页面规定的区域运动
2020/06/16 Javascript
Openlayers显示瓦片网格信息的方法
2020/09/28 Javascript
原生js实现自定义滚动条组件
2021/01/20 Javascript
使用Python & Flask 实现RESTful Web API的实例
2017/09/19 Python
修改默认的pip版本为对应python2.7的方法
2018/11/06 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
Python HTTP下载文件并显示下载进度条功能的实现
2020/04/02 Python
Python使用grequests并发发送请求的示例
2020/11/05 Python
如何用Python来进行查询和替换一个文本字符串
2014/01/02 面试题
上课迟到检讨书100字
2014/01/11 职场文书
个人求职信范例
2014/01/29 职场文书
爱国演讲稿400字
2014/05/07 职场文书
小学优秀辅导员事迹材料
2014/05/11 职场文书
党员考试作弊检讨书1000字
2015/02/16 职场文书
2019年最新借条范本!
2019/07/08 职场文书
JavaWeb 入门篇:创建Web项目,Idea配置tomcat
2021/07/16 Java/Android