解决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实现简单的文件传输与MySQL备份的脚本分享
Jan 03 Python
Python Queue模块详细介绍及实例
Dec 27 Python
python3中bytes和string之间的互相转换
Feb 09 Python
python读写LMDB文件的方法
Jul 02 Python
详解Python给照片换底色(蓝底换红底)
Mar 22 Python
详解Python sys.argv使用方法
May 10 Python
python Dijkstra算法实现最短路径问题的方法
Sep 19 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
Sep 20 Python
python实现根据文件格式分类
Oct 31 Python
使用NumPy读取MNIST数据的实现代码示例
Nov 20 Python
利用keras使用神经网络预测销量操作
Jul 07 Python
Django serializer优化类视图的实现示例
Jul 16 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文件上传主要代码讲解
2013/09/30 PHP
PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子
2014/05/12 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
2019/12/12 PHP
FormValidate 表单验证功能代码更新并提供下载
2008/08/23 Javascript
javascript RadioButtonList获取选中值
2009/04/09 Javascript
21个值得收藏的Javascript技巧
2014/02/04 Javascript
Javascript中arguments对象详解
2014/10/22 Javascript
jQuery实现响应浏览器缩放大小并改变背景颜色
2014/10/31 Javascript
如何在Linux上安装Node.js
2016/04/01 Javascript
深入理解JS正则表达式---分组
2016/07/18 Javascript
js移动焦点到最后位置的简单方法
2016/11/25 Javascript
高效的jQuery代码编写技巧总结
2017/02/22 Javascript
详解webpack和webpack-simple中如何引入css文件
2017/06/28 Javascript
详解刷新页面vuex数据不消失和不跳转页面的解决
2018/01/30 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
详解三种方式解决vue中v-html元素中标签样式
2018/11/22 Javascript
解决vue项目router切换太慢问题
2020/07/19 Javascript
python实现监控linux性能及进程消耗性能的方法
2014/07/25 Python
Python3使用requests登录人人影视网站的方法
2016/05/11 Python
总结python实现父类调用两种方法的不同
2017/01/15 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
2018/03/02 Python
python实现人人自动回复、抢沙发功能
2018/06/08 Python
python之django母板页面的使用
2018/07/03 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
2019/08/23 Python
使用Python的turtle模块画国旗
2019/09/24 Python
python使用pygame实现笑脸乒乓球弹珠球游戏
2019/11/25 Python
Python 实现自动完成A4标签排版打印功能
2020/04/09 Python
python输出数学符号实例
2020/05/11 Python
超市理货员岗位职责
2014/07/04 职场文书
力学专业求职信
2014/07/23 职场文书
大学感恩节活动策划方案
2014/10/11 职场文书
2014年环境卫生工作总结
2014/11/24 职场文书
公务员考察材料范文
2014/12/23 职场文书
高效课堂教学反思
2016/02/24 职场文书
高一作文之暖冬
2019/11/09 职场文书
浅谈TypeScript 索引签名的理解
2021/10/16 Javascript