解决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脚本生成随机IP的简单方法
Jul 30 Python
十个Python程序员易犯的错误
Dec 15 Python
Python 如何访问外围作用域中的变量
Sep 11 Python
Python3实现抓取javascript动态生成的html网页功能示例
Aug 22 Python
python利用paramiko连接远程服务器执行命令的方法
Oct 16 Python
Python3 sys.argv[ ]用法详解
Oct 24 Python
Python调用graphviz绘制结构化图形网络示例
Nov 22 Python
Keras Convolution1D与Convolution2D区别说明
May 22 Python
Python collections.defaultdict模块用法详解
Jun 18 Python
python zip()函数的使用示例
Sep 23 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
Mar 03 Python
python中__slots__节约内存的具体做法
Jul 04 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 远程关机操作的代码
2008/12/05 PHP
php 调用远程url的六种方法小结
2009/11/02 PHP
在PHP中检查PHP文件是否有语法错误的方法
2009/12/23 PHP
PHP制作万年历
2015/01/07 PHP
PHP限制HTML内容中图片必须是本站的方法
2015/06/16 PHP
百万级别知乎用户数据抓取与分析之PHP开发
2015/09/28 PHP
PHP实现的大文件切割与合并功能示例
2018/04/10 PHP
心扬JS分页函数代码
2010/09/10 Javascript
js监听键盘事件示例代码
2013/07/26 Javascript
在JS数组特定索引处指定位置插入元素的技巧
2014/08/24 Javascript
jQuery实现带动画效果的多级下拉菜单代码
2015/09/08 Javascript
js获取及判断键盘按键的方法
2015/12/01 Javascript
完美解决jQuery 鼠标快速滑过后,会执行多次滑出的问题
2016/12/08 Javascript
基于JavaScript实现购物车功能
2017/02/07 Javascript
vue路由跳转时判断用户是否登录功能的实现
2017/10/26 Javascript
JS中实现隐藏部分姓名或者电话号码的代码
2018/07/17 Javascript
微信小程序实现日历功能
2018/11/27 Javascript
Vue 后台管理类项目兼容IE9+的方法示例
2019/02/20 Javascript
angular8和ngrx8结合使用的步骤介绍
2019/12/01 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
2020/04/26 Javascript
vue实现图片按比例缩放问题操作
2020/08/11 Javascript
全局安装 Vue cli3 和 继续使用 Vue-cli2.x操作
2020/09/08 Javascript
JS中多层次排序算法的实现代码
2021/01/06 Javascript
python静态方法实例
2015/01/14 Python
浅述python2与python3的简单区别
2018/09/19 Python
Finishline官网:美国一家领先的运动品牌鞋类、服装零售商
2016/07/20 全球购物
美国受信赖的教育产品供应商:Nest Learning
2018/06/14 全球购物
美国室内盆栽植物购买网站:Plants.com
2020/04/24 全球购物
如何判断一段程序是由C 编译程序还是由C++编译程序编译的
2013/08/04 面试题
介绍一下HTTP、HTTPS和SSL
2012/12/16 面试题
如何利用XMLHTTP检测URL及探测服务器信息
2013/11/10 面试题
安全责任书范文
2014/03/12 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
2015年秋季开学典礼校长致辞
2015/07/16 职场文书
Python基础之操作MySQL数据库
2021/05/06 Python
JAVA springCloud项目搭建流程
2022/05/11 Java/Android