解决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中列表和元祖的使用方法
Apr 25 Python
详解Python中的from..import绝对导入语句
Jun 21 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
Jun 09 Python
Python基于scapy实现修改IP发送请求的方法示例
Jul 08 Python
Python用于学习重要算法的模块pygorithm实例浅析
Aug 16 Python
基于python实现学生管理系统
Oct 17 Python
python设定并获取socket超时时间的方法
Jan 12 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
Jan 22 Python
python 通过文件夹导入包的操作
Jun 01 Python
解决TensorFlow调用Keras库函数存在的问题
Jul 06 Python
Python爬虫之Selenium中frame/iframe表单嵌套页面
Dec 04 Python
python实现的web监控系统
Apr 27 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保存二进制原始数据为图片的程序代码
2014/10/14 PHP
smarty内置函数capture用法分析
2015/01/22 PHP
php获取一定范围内取N个不重复的随机数
2016/05/28 PHP
动态修改DOM 里面的 id 属性的弊端分析
2008/09/03 Javascript
如何学习Javascript入门指导
2013/11/01 Javascript
JavaScript验证18位身份证号码最后一位正确性的实现代码
2014/08/07 Javascript
win7下安装配置node.js+express开发环境
2015/12/06 Javascript
javascript轻量级库createjs使用Easel实现拖拽效果
2016/02/19 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
2016/07/20 Javascript
JS jQuery使用正则表达式去空字符的简单实现代码
2017/05/20 jQuery
nodejs动态创建二维码的方法
2017/08/12 NodeJs
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
JS实现点击复选框变更DIV显示状态的示例代码
2017/12/18 Javascript
vue中监听路由参数的变化及方法
2019/12/06 Javascript
JavaScript中layim之整合右键菜单的示例代码
2021/02/06 Javascript
python定时采集摄像头图像上传ftp服务器功能实现
2013/12/23 Python
Python struct模块解析
2014/06/12 Python
Python实现获取操作系统版本信息方法
2015/04/08 Python
Python脚本处理空格的方法
2016/08/08 Python
详解Python中的静态方法与类成员方法
2017/02/28 Python
在java中如何定义一个抽象属性示例详解
2017/08/18 Python
Python 反转字符串(reverse)的方法小结
2018/02/20 Python
Python 加密与解密小结
2018/12/06 Python
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
python生成每日报表数据(Excel)并邮件发送的实例
2019/02/03 Python
python实现的汉诺塔算法示例
2019/10/23 Python
初探CSS3中的calc()功能
2015/07/14 HTML / CSS
Kangol帽子官网:坎戈尔袋鼠
2018/09/26 全球购物
网络安全方面的面试题
2015/11/04 面试题
中学生自我鉴定
2014/02/04 职场文书
公司总经理工作职责管理办法
2014/02/28 职场文书
对孩子的寄语
2014/04/09 职场文书
化工实习心得体会
2014/09/09 职场文书
党的群众路线教育实践活动对照检查材料思想汇报(党员篇)
2014/09/25 职场文书
教学督导岗位职责
2015/04/10 职场文书
Python中快速掌握Data Frame的常用操作
2021/03/31 Python