解决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中getattr函数使用方法 getattr实现工厂模式
Jan 20 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
Jun 13 Python
Python常用库推荐
Dec 04 Python
python爬虫爬取网页表格数据
Mar 07 Python
使用python将图片按标签分入不同文件夹的方法
Dec 08 Python
flask框架jinja2模板与模板继承实例分析
Aug 01 Python
python3操作注册表的方法(Url protocol)
Feb 05 Python
Python安装与卸载流程详细步骤(图解)
Feb 20 Python
解决python Jupyter不能导入外部包问题
Apr 15 Python
keras 获取某层输出 获取复用层的多次输出实例
May 23 Python
python math模块的基本使用教程
Jan 16 Python
Python生成九宫格图片的示例代码
Apr 14 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中获取文件扩展名的N种方法小结
2012/02/27 PHP
php获取textarea的值并处理回车换行的方法
2014/10/20 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
PHP设计模式之适配器模式原理与用法分析
2018/04/25 PHP
php gethostbyname获取域名ip地址函数详解
2010/01/24 Javascript
jQuery UI AutoComplete 使用说明
2011/06/20 Javascript
基于jquery实现的图片在各种分辨率下未知的容器内上下左右居中
2014/05/11 Javascript
js脚本实现数据去重
2014/11/27 Javascript
js 声明数组和向数组中添加对象变量的简单实例
2016/07/28 Javascript
微信小程序 数组(增,删,改,查)等操作实例详解
2017/01/05 Javascript
js仿百度音乐全选操作
2017/01/13 Javascript
基于jQuery的表单填充实例
2017/08/22 jQuery
JavaScript如何实现元素全排列实例代码
2019/05/14 Javascript
Python的lambda匿名函数的简单介绍
2013/04/25 Python
Python中让MySQL查询结果返回字典类型的方法
2014/08/22 Python
Python去除字符串两端空格的方法
2015/05/21 Python
Python守护进程用法实例分析
2015/06/04 Python
基于numpy.random.randn()与rand()的区别详解
2018/04/17 Python
python实现C4.5决策树算法
2018/08/29 Python
python/sympy求解矩阵方程的方法
2018/11/08 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
简单了解为什么python函数后有多个括号
2019/12/19 Python
浅谈Python中range与Numpy中arange的比较
2020/03/11 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
2020/06/02 Python
Python获取浏览器窗口句柄过程解析
2020/07/25 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
2020/12/11 Python
CSS3实现的炫酷菜单代码分享
2015/03/12 HTML / CSS
阿巴庭院:Abba Patio
2019/06/18 全球购物
学习党课思想汇报
2013/12/29 职场文书
公司培训心得体会
2014/01/03 职场文书
聘任书模板
2014/03/29 职场文书
经济管理专业求职信
2014/06/09 职场文书
专项法律服务方案
2014/06/11 职场文书
2014年工人工作总结
2014/11/25 职场文书
高中议论文(范文2篇)
2019/08/19 职场文书