Python项目打包部署到服务器的详细指南

阿里小阿希 2024-10-16 09:07:01 阅读 70

摘要:本文将详细介绍如何将Python项目打包成可执行文件,并将其部署到服务器上。通过本文的学习,你将掌握Python项目打包和部署的整个过程。

一、准备工作

开发环境:本文以PyCharm为例,其他IDE或文本编辑器同理。服务器:本文以Ubuntu为例,其他Linux系统同理。Python项目:已完成开发并能在本地正常运行。

二、项目打包

Python项目打包通常使用<code>pip安装依赖,并通过setuptools创建可执行的脚本。

安装打包工具

首先,确保你的环境中安装了setuptoolswheel

pip install setuptools wheel

创建setup.py

项目根目录下创建一个setup.py文件,内容如下:

from setuptools import setup, find_packages

setup(

name='your_project_name',code>

version='0.1.0',code>

packages=find_packages(),

install_requires=[

# 这里填写项目依赖的包,例如

'Flask==1.1.2',

'requests==2.25.1',

],

entry_points={

'console_scripts': [

'your_script_name=your_package.module:main_function',

],

},

)

替换your_project_nameyour_script_nameyour_package.modulemain_function为你的项目信息。

3. 打包项目

在命令行中,进入项目根目录,执行以下命令进行打包:

python setup.py sdist bdist_wheel

打包完成后,你会在dist目录下找到.tar.gz.whl文件。

三、部署到服务器

上传打包文件到服务器

使用SCP命令将打包好的文件上传到服务器:

scp dist/your_project_name-0.1.0-py3-none-any.whl user@your_server_ip:/path/to/deploy

安装项目依赖

连接到服务器,并安装项目依赖:

ssh user@your_server_ip

cd /path/to/deploy

pip install your_project_name-0.1.0-py3-none-any.whl

或者,如果你上传了.tar.gz文件,可以使用以下命令安装:

pip install your_project_name-0.1.0.tar.gz

运行项目

安装完成后,你可以直接运行你的脚本:

your_script_name

如果需要后台运行,可以使用nohup&

nohup your_script_name &

查看运行日志

查看运行日志:

tail -f nohup.out

四、设置服务自启动

为了使项目在服务器启动时自动运行,可以创建一个系统服务。

创建服务文件

sudo nano /etc/systemd/system/your_project_name.service

添加以下内容:

[Unit]

Description=My Python Project Service

After=network.target

[Service]

User=user

ExecStart=/usr/bin/python /path/to/your_script_name

Restart=on-failure

[Install]

WantedBy=multi-user.target

替换user/path/to/your_script_name为你的用户名和脚本路径。

2. 启动并使服务自启动

sudo systemctl start your_project_name

sudo systemctl enable your_project_name

现在,你的Python项目应该已经成功部署到服务器并配置为自启动服务。如果需要重启或停止服务,可以使用以下命令:

sudo systemctl restart your_project_name

sudo systemctl stop your_project_name

通过以上步骤,你的Python项目已经可以稳定运行在服务器上了。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。