解决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的几种开发工具介绍
Mar 07 Python
Python循环语句中else的用法总结
Sep 11 Python
Python基于socket实现简单的即时通讯功能示例
Jan 16 Python
Python理解递归的方法总结
Jan 28 Python
Python将列表数据写入文件(txt, csv,excel)
Apr 03 Python
Python选择网卡发包及接收数据包
Apr 04 Python
Python3 翻转二叉树的实现
Sep 30 Python
完美解决pycharm导入自己写的py文件爆红问题
Feb 12 Python
Python如何将函数值赋给变量
Apr 28 Python
django的autoreload机制实现
Jun 03 Python
Python 抓取数据存储到Redis中的操作
Jul 16 Python
解决Jupyter-notebook不弹出默认浏览器的问题
Mar 30 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/06/06 PHP
PHP使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
使用Composer安装Yii框架的方法
2016/03/15 PHP
PHP身份证校验码计算方法
2016/08/10 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
PHP学习笔记之session
2018/05/06 PHP
User Scripts: Video Download by User Scripts
2007/05/14 Javascript
基于jquery的3d效果实现代码
2011/03/23 Javascript
javascript中alert()与console.log()的区别
2015/08/26 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
2015/09/27 Javascript
javascript原型继承工作原理和实例详解
2016/04/07 Javascript
JS原型链怎么理解
2016/06/27 Javascript
在JavaScript中调用Java类和接口的方法
2016/09/07 Javascript
Vue2.0表单校验组件vee-validate的使用详解
2017/05/02 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
vue强制刷新组件的方法示例
2019/02/28 Javascript
python 字典(dict)遍历的四种方法性能测试报告
2014/06/25 Python
python批量同步web服务器代码核心程序
2014/09/01 Python
django在接受post请求时显示403forbidden实例解析
2018/01/25 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
2018/06/05 Python
python使用KNN算法识别手写数字
2019/04/25 Python
学习python分支结构
2019/05/17 Python
python selenium 执行完毕关闭chromedriver进程示例
2019/11/15 Python
用python中的matplotlib绘制方程图像代码
2019/11/21 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
基于python实现破解滑动验证码过程解析
2020/05/28 Python
通过案例解析python鸭子类型相关原理
2020/10/10 Python
DVF官方网站:美国时装界尊尚品牌
2017/08/29 全球购物
招商业务员岗位职责
2013/12/16 职场文书
通信工程求职信
2014/07/16 职场文书
科技馆观后感
2015/06/08 职场文书
演讲比赛主持词
2015/06/29 职场文书
如何使用php生成zip压缩包
2021/04/21 PHP
html+css实现赛博朋克风格按钮
2021/05/26 HTML / CSS
MySQL5.7并行复制原理及实现
2021/06/03 MySQL