解决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 http长连接客户端
Jun 12 Python
Python实现判断字符串中包含某个字符的判断函数示例
Jan 08 Python
python实现列表中由数值查到索引的方法
Jun 27 Python
关于python列表增加元素的三种操作方法
Aug 22 Python
python/sympy求解矩阵方程的方法
Nov 08 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
Jun 28 Python
Django Channels 实现点对点实时聊天和消息推送功能
Jul 17 Python
pyenv与virtualenv安装实现python多版本多项目管理
Aug 17 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
Oct 15 Python
Python类的继承super相关原理解析
Oct 22 Python
python中threading和queue库实现多线程编程
Feb 06 Python
python切片作为占位符使用实例讲解
Feb 17 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
javascript 带有滚动条的表格,标题固定,带排序功能.
2009/11/13 Javascript
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
用jquery等比例控制图片宽高的具体实现
2014/01/28 Javascript
实例详解jQuery Mockjax 插件模拟 Ajax 请求
2016/01/12 Javascript
Angularjs整合微信UI(weui)
2016/03/15 Javascript
url传递的参数值中包含&时,url自动截断问题的解决方法
2016/08/02 Javascript
javascript实现消灭星星小游戏简单版
2016/11/15 Javascript
Nodejs回调加超时限制两种实现方法
2017/06/09 NodeJs
React利用插件和不用插件实现双向绑定的方法详解
2017/07/03 Javascript
shiro授权的实现原理
2017/09/21 Javascript
微信小程序之数据缓存的实例详解
2017/09/29 Javascript
prototype.js简单实现ajax功能示例
2017/10/18 Javascript
element 结合vue 在表单验证时有值却提示错误的解决办法
2018/01/22 Javascript
Angular学习笔记之集成三方UI框架、控件的示例
2018/03/23 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
2019/04/04 Javascript
JS实现的自定义map方法示例
2019/05/17 Javascript
vue自定义正在加载动画的例子
2019/11/14 Javascript
vue-cli3中配置alias和打包加hash值操作
2020/09/04 Javascript
python中列表元素连接方法join用法实例
2015/04/07 Python
解决python ogr shp字段写入中文乱码的问题
2018/12/31 Python
python使用thrift教程的方法示例
2019/03/21 Python
Python深拷贝与浅拷贝用法实例分析
2019/05/05 Python
Python通过cv2读取多个USB摄像头
2019/08/28 Python
pytorch使用 to 进行类型转换方式
2020/01/08 Python
Python中os模块功能与用法详解
2020/02/26 Python
Python使用re模块验证危险字符
2020/05/21 Python
CSS3 linear-gradient线性渐变生成加号和减号的方法
2017/11/21 HTML / CSS
澳大利亚音乐商店:Bava’s Music City
2019/05/05 全球购物
十佳班主任事迹材料
2014/01/18 职场文书
新闻学专业大学生职业生涯规划范文
2014/03/02 职场文书
无毒社区工作方案
2014/05/23 职场文书
歌颂党的演讲稿
2014/09/10 职场文书
中学生旷课检讨书模板
2014/10/08 职场文书
礼仪培训心得体会
2016/01/22 职场文书
导游词之京东大峡谷旅游区
2019/10/29 职场文书
SpringBoot中获取profile的方法详解
2022/04/08 Java/Android