解决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网络编程之读取网站根目录实例
Sep 30 Python
详解Python中with语句的用法
Apr 15 Python
使用Python的Flask框架来搭建第一个Web应用程序
Jun 04 Python
同时安装Python2 & Python3 cmd下版本自由选择的方法
Dec 09 Python
Python3.6安装及引入Requests库的实现方法
Jan 24 Python
python利用requests库进行接口测试的方法详解
Jul 06 Python
使用Python实现跳帧截取视频帧
May 31 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
Jun 08 Python
Python numpy矩阵处理运算工具用法汇总
Jul 13 Python
通过代码实例了解Python3编程技巧
Oct 13 Python
Python中Qslider控件实操详解
Feb 20 Python
解决pytorch 保存模型遇到的问题
Mar 03 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 sybase_fetch_array使用方法
2014/04/15 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
2016/10/17 PHP
php mysql获取表字段名称和字段信息的三种方法
2016/11/13 PHP
Prototype使用指南之selector.js
2007/01/10 Javascript
js tab 选项卡
2009/04/26 Javascript
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
AJAX跨域请求json数据的实现方法
2013/11/11 Javascript
javascript属性访问表达式用法分析
2015/04/25 Javascript
JS把内容动态插入到DIV的实现方法
2016/07/19 Javascript
Vue.js每天必学之数据双向绑定
2016/09/05 Javascript
jquery实现数字输入框
2017/02/22 Javascript
深入理解node.js之path模块
2017/05/03 Javascript
微信小程序 图片上传实例详解
2017/05/05 Javascript
详解VUE中v-bind的基本用法
2017/07/13 Javascript
微信小程序实现即时通信聊天功能的实例代码
2018/08/17 Javascript
使用Webpack 搭建 Vue3 开发环境过程详解
2020/07/28 Javascript
基于python的Tkinter编写登陆注册界面
2017/06/30 Python
使用python3+xlrd解析Excel的实例
2018/05/04 Python
Django 中使用流响应处理视频的方法
2018/07/20 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
2018/07/27 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
Python 复平面绘图实例
2019/11/21 Python
Keras使用tensorboard显示训练过程的实例
2020/02/15 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
2020/07/03 Python
python3.9.1环境安装的方法(图文)
2021/02/02 Python
CSS3中的transform属性进行2D和3D变换的基本用法
2016/05/12 HTML / CSS
瑞典领先的汽车零部件网上零售商:bildelaronline24.se
2017/01/12 全球购物
台湾生鲜宅配:大口市集
2017/10/14 全球购物
欧洲品牌瓷器餐具网上商店:Porzellantreff.de
2018/04/04 全球购物
Harrods美国:英国最大的百货公司
2018/11/04 全球购物
天地会口号
2014/06/17 职场文书
出国签证在职证明
2014/09/20 职场文书
停车场管理协议书范本
2014/10/08 职场文书
会计专业求职信范文
2015/03/19 职场文书
Pytest实现setup和teardown的详细使用详解
2021/04/17 Python
python3实现Dijkstra算法最短路径的实现
2021/05/12 Python