Python服务器/本地离线部署

2023-10-31 08:41:21

服务器

# 导出第三方模块
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")
  • 作者:救救可怜孩子吧
  • 原文链接:https://blog.csdn.net/qq_41627017/article/details/127826897
    更新时间:2023-10-31 08:41:21