【ubuntu】python执行问题记录

python初级报错

先介绍下前情提要,客户需要导入数据,但是不需要给做导入功能,所以想了个办法,使用python读Excel进行导入

打包

首先想的是先打包执行,第一个问题,知道了一个问题,就是这个不像java的,可以跨平台,在windows下打包的只能在windows下运行,因为最终我需要是在ubuntu中运行。

安装pyinstaller

这里我的python使用的是3系的,当然了3.6和3.8我都有。。。这个不重要
在这里插入图片描述
所以安装的pip也是pip3

pip3 install pyinstaller

安装完了看下结果
【ubuntu】python执行问题记录_第1张图片

准备好python文件

我这里的文件结构
【ubuntu】python执行问题记录_第2张图片
在当前目录下执行命令

pyinstaller -F do_room_fee_type_fun.py

【ubuntu】python执行问题记录_第3张图片

常用参数:
-i 添加图标,后面紧跟图标路径,图标格式必须是.ico
-F 打包成一个exe文件
-w 使用窗口,无控制台
-c 使用控制台,无窗口
-D 创建一个目录,里面包含exe以及其他一些依赖性文件
pyinstaller -h 来查看参数

然后就出来了那个build和dist文件夹,进入dist文件夹,
在这里插入图片描述
然后执行

./do_room_fee_type_fun

结果报错了。。。说是找不到模块,这个看了好久,还是自己太菜了,没找到为啥。。。
在这里插入图片描述
希望看到的大神能指点一下,多谢

直接服务器安装环境执行

既然打包失败,可以源码直接运行,高高兴兴给代码拷贝过去了,执行,叮报错
在这里插入图片描述
直接还是找不到模块,然后一顿找,发现了在pycharm中运行时,会将当前工程的所有文件夹路径都作为包的搜索路径;而在命令行中运行时,只是搜索当前路径,当然找不到module咯

解决办法是在do_room_fee_type_fun.py最前面加上以下代码:

import sys, os

curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)

然后执行,可以了,自己的包能找到了,但是还有报错
在这里插入图片描述
那这个就简单了,这个ubuntu里没有这个包,安装下就好了
执行pip install,叮,又报错
在这里插入图片描述
没办法,只能继续安装环境了,这里需要依赖一个FreeTDS

apt-get install freetds-dev

【ubuntu】python执行问题记录_第4张图片
然后继续安装

apt-get install python-dev

【ubuntu】python执行问题记录_第5张图片
安装pip

apt install python3-pip

【ubuntu】python执行问题记录_第6张图片
然后安装pymssql
在这里插入图片描述
发现这个包在3.6包里已经存在了
然后执行,成功啦!!!
在这里插入图片描述

你可能感兴趣的:(python,python,ubuntu)