服务器
# 导出第三方模块
pip freeze > requirements.txt
rm -rf __pycache__/ venv/ .idea/
/usr/local/bin/python3.7 -m pip install virtualenv
/usr/local/bin/python3.7 -m virtualenv venv
# 安装虚拟环境的第三方包
pip3 install virtualenv
# 创建虚拟环境
virtualenv venv
# 激活虚拟环境
source venv/bin/activate
# 退出虚拟环境
deactivate
# 下载第三方模块
pip install -r requirements.txt
# 启动
/usr/local/bin/python3.7 app.py
后台运行python
进入要运行的py文件目录前
nohup python-u test.py > test.log 2>&1 &
含义解释:
nohup 不挂起的意思
python test.py python运行test.py文件-u 代表程序不启用缓存,也就是把输出直接放到log中,没这个参数的话,log文件的生成会有延迟
test.log 将输出日志保存到这个log中
2>1 2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出;
2>&1 换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出.
& 最后一个& ,代表该命令在后台执行
本地离线
# 离线下载packages文件夹
pip download -d packages -r requirements.txt
# 导出第三方模块
pip freeze > requirements.txt
# packages文件夹和requirement.txt放在D:\Python\Scripts下
# 进入D:\Python\Scripts执行命令
pip install --no-index --find-links=packages -r requirements.txt
Python打成exe文件
# 下载pyinstaller
pip install pyinstaller
# 打成exe文件
pyinstaller -F -w -i xxx.ico app.py
pyinstaller 打包出现第三方库FileNotFoundError的报错
FileNotFoundError: [Errno 2] No such file or directory: ‘C:\Users\ADMINI~1\AppData\Local\Temp\1\_MEI54762\jieba\dict.txt’
[20784] Failed to execute script bat_server
上面就是没把python库jieba的dict.txt打包进来,导致了错误。
那么,解决问题也很简单,自己写个hook,然后放进python根目录\Lib\site-packages\PyInstaller\hooks下即可。
hook文件的命名规范为: hook-【库名】.py,以结巴分词为例,即为hook-jieba.py,然后简单敲入以下两行:
from PyInstaller.utils.hooksimport collect_data_files
datas= collect_data_files("jieba")