解决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牛刀小试密码爆破
Feb 03 Python
Python对象转JSON字符串的方法
Apr 27 Python
Python中使用platform模块获取系统信息的用法教程
Jul 08 Python
Python解惑之True和False详解
Apr 24 Python
Python实现的线性回归算法示例【附csv文件下载】
Dec 29 Python
python实现贪吃蛇小游戏
Mar 21 Python
Django集成搜索引擎Elasticserach的方法示例
Jun 04 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
Aug 07 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
Aug 09 Python
Python使用Numpy模块读取文件并绘制图片
May 13 Python
利用Python实现Json序列化库的方法步骤
Sep 09 Python
Python APScheduler执行使用方法详解
Dec 10 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个人网站架设连环讲(三)
2006/10/09 PHP
如何使用PHP实现javascript的escape和unescape函数
2013/06/29 PHP
php简单创建zip压缩文件的方法
2016/04/30 PHP
PHP解决高并发的优化方案实例
2020/12/10 PHP
优化javascript的执行效率一些方法总结
2013/12/25 Javascript
JS+CSS实现另类带提示效果的竖向导航菜单
2015/10/15 Javascript
jQuery常用样式操作实例分析(获取、设置、追加、删除、判断等)
2016/09/08 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
JavaScript中的普通函数和箭头函数的区别和用法详解
2017/03/21 Javascript
javascript 中的try catch应用总结
2017/04/01 Javascript
Vue中对比scoped css和css module的区别
2018/05/17 Javascript
零基础之Node.js搭建API服务器的详解
2019/03/08 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
2019/11/07 jQuery
js canvas实现俄罗斯方块
2020/10/11 Javascript
nodejs中使用worker_threads来创建新的线程的方法
2021/01/22 NodeJs
Python使用Flask框架获取当前查询参数的方法
2015/03/21 Python
python中xrange用法分析
2015/04/15 Python
Python 过滤错误log并导出的实例
2019/12/26 Python
python nohup 实现远程运行不宕机操作
2020/04/16 Python
DataFrame 数据合并实现(merge,join,concat)
2020/06/14 Python
python里的单引号和双引号的有什么作用
2020/06/17 Python
实例讲解CSS3中的box-flex弹性盒属性布局
2016/06/09 HTML / CSS
德国净水壶和滤芯品牌:波尔德PearlCo(家用净水器)
2020/04/29 全球购物
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
前台文员个人求职信范文
2014/01/05 职场文书
个人作风纪律整顿整改措施
2014/10/25 职场文书
2015年清明节网上祭英烈留言寄语
2015/03/04 职场文书
教学督导岗位职责
2015/04/10 职场文书
公司表扬信格式
2015/05/04 职场文书
硕士学位申请报告
2015/05/15 职场文书
2016年“5.12”护士节致辞
2015/07/31 职场文书
2016高校自主招生自荐信范文
2016/01/28 职场文书
委托书范本格式
2019/04/18 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS
Django分页器的用法你都了解吗
2021/05/26 Python
php修改word的实例方法
2021/11/17 PHP