解决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通过线程实现定时器timer的方法
Mar 16 Python
python判断图片宽度和高度后删除图片的方法
May 22 Python
wxpython中Textctrl回车事件无效的解决方法
Jul 21 Python
python使用插值法画出平滑曲线
Dec 15 Python
python 执行文件时额外参数获取的实例
Dec 18 Python
对python中Json与object转化的方法详解
Dec 31 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
Jun 21 Python
python opencv捕获摄像头并显示内容的实现
Jul 11 Python
Tensorflow实现多GPU并行方式
Feb 03 Python
python sorted函数原理解析及练习
Feb 10 Python
使用python matplotlib 画图导入到word中如何保证分辨率
Apr 16 Python
浅谈Python 函数式编程
Jun 20 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 文件类型判断代码
2009/03/13 PHP
过滤掉PHP数组中的重复值的实现代码
2011/07/17 PHP
Yii中的cookie的发送和读取
2016/07/27 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
select标签模拟/美化方法采用JS外挂式插件
2013/04/01 Javascript
js 获取(接收)地址栏参数值的方法
2013/04/01 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
js实现图片轮播效果
2015/12/19 Javascript
jQuery+ajax实现文章点赞功能的方法
2015/12/31 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
Node.js+jade抓取博客所有文章生成静态html文件的实例
2017/09/19 Javascript
JS实现模糊查询带下拉匹配效果
2018/06/21 Javascript
[06:36]吞吞映像top1
2014/06/20 DOTA
[54:26]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第一场 12.10
2020/12/12 DOTA
python使用在线API查询IP对应的地理位置信息实例
2014/06/01 Python
使用Python对Excel进行读写操作
2017/03/30 Python
Python文件的读写和异常代码示例
2017/10/31 Python
通过python+selenium3实现浏览器刷简书文章阅读量
2017/12/26 Python
django文档学习之applications使用详解
2018/01/29 Python
Python批量合并有合并单元格的Excel文件详解
2018/04/05 Python
python实现简单日期工具类
2019/04/24 Python
python中自带的三个装饰器的实现
2019/11/08 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
HTML5实现Notification API桌面通知功能
2016/03/02 HTML / CSS
Maje德国官网:法国女性成衣品牌
2017/02/10 全球购物
夜大毕业生自我评价分享
2013/11/10 职场文书
创建文明城市标语
2014/06/16 职场文书
工人先进事迹材料
2014/12/26 职场文书
结婚喜宴迎宾词
2015/08/10 职场文书
教师个人工作总结范文2015
2015/10/14 职场文书
合理缓解职场压力,让你随时保持最佳状态!
2019/06/21 职场文书
MySQL 8.0 之不可见列的基本操作
2021/05/20 MySQL
Python竟然能剪辑视频
2021/05/25 Python
MYSQL(电话号码,身份证)数据脱敏的实现
2021/05/28 MySQL
Java生成日期时间存入Mysql数据库的实现方法
2022/03/03 Java/Android
Mybatis-plus配置分页插件返回统一结果集
2022/06/21 Java/Android