解决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连接池实现示例程序
Nov 26 Python
Python open()文件处理使用介绍
Nov 30 Python
python文件操作相关知识点总结整理
Feb 22 Python
python中模块查找的原理与方法详解
Aug 11 Python
Python使用arrow库优雅地处理时间数据详解
Oct 10 Python
Python处理菜单消息操作示例【基于win32ui模块】
May 09 Python
对python抓取需要登录网站数据的方法详解
May 21 Python
基于Django与ajax之间的json传输方法
May 29 Python
Python 变量类型详解
Oct 10 Python
Python进阶:生成器 懒人版本的迭代器详解
Jun 29 Python
Django框架视图层URL映射与反向解析实例分析
Jul 29 Python
tensorflow转换ckpt为savermodel模型的实现
May 25 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
PHP5/ZendEngine2的改进
2006/10/09 PHP
PHP与已存在的Java应用程序集成
2006/10/09 PHP
PHP url 加密解密函数代码
2011/08/26 PHP
PHP单态模式简单用法示例
2016/11/16 PHP
PHP页面跳转实现延时跳转的方法
2016/12/10 PHP
PHP网站自动化配置的实现方法(必看)
2017/05/27 PHP
Prototype使用指南之string.js
2007/01/10 Javascript
JavaScript初学者应注意的七个细节小结
2012/01/30 Javascript
Js 回车换行处理的办法及replace方法应用
2013/01/24 Javascript
checkbox全选所涉及到的知识点介绍
2013/12/31 Javascript
在JavaScript中使用对数Math.log()方法的教程
2015/06/15 Javascript
javascript中tostring()和valueof()的用法及两者的区别
2015/11/16 Javascript
基于jquery实现智能提示控件intellSeach.js
2016/03/17 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
2016/10/04 Javascript
Js自定义多选框效果的实例代码
2017/07/05 Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
2018/10/24 Javascript
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
vue的$http的get请求要加上params操作
2020/11/12 Javascript
用Python进行基础的函数式编程的教程
2015/03/31 Python
Python Requests 基础入门
2016/04/07 Python
Python 中的 else详解
2016/04/23 Python
Python机器学习之决策树算法实例详解
2017/12/06 Python
Python高级特性切片(Slice)操作详解
2018/09/27 Python
设置python3为默认python的方法
2018/10/31 Python
深入浅析python3中的unicode和bytes问题
2019/07/03 Python
postman传递当前时间戳实例详解
2019/09/14 Python
英国旅游额外服务市场领导者:Holiday Extras(机场停车场、酒店、接送等)
2017/10/07 全球购物
TripAdvisor台湾:全球最大旅游网站
2018/08/26 全球购物
大学生毕业自我评价范文分享
2013/11/07 职场文书
校园活动策划书范文
2014/01/10 职场文书
yy结婚证婚词
2014/01/10 职场文书
反邪教标语
2014/06/23 职场文书
2014年高二班主任工作总结
2014/12/16 职场文书
三好学生竞选稿
2015/11/21 职场文书
阳光体育运动标语口号
2015/12/26 职场文书
go语言中json数据的读取和写出操作
2021/04/28 Golang