PyCharm中Python项目打包并运行到服务器的简明指南
目录
一、准备工作
二、创建并设置Python项目
创建新项目
配置项目依赖
安装PyInstaller
三、打包项目
打包为可执行文件
另一种打包方式(使用setup.py)
四、配置服务器环境
五、上传可执行文件到服务器
六、在服务器上运行项目
配置SSH解释器
配置部署
上传代码
在服务器上运行
八、注意事项
示例项目总结
在现代软件开发中,将本地开发完成的Python项目打包并部署到服务器上是一项基本且重要的技能。本文将通过简洁明了的步骤,结合代码示例,详细介绍如何在PyCharm中完成这一流程。

一、准备工作
在开始之前,确保你的电脑上已经安装了Python和PyCharm。你可以通过以下命令来检查Python是否安装成功:
python --version
同时,确保你能够在PyCharm中创建项目,并打开终端执行命令。
二、创建并设置Python项目
创建新项目
打开PyCharm,点击“File”菜单,选择“New Project”。设置项目名称和路径,并确保勾选“Create virtual environment”以使用虚拟环境。点击“OK”完成项目创建。
配置项目依赖
在项目结构中添加Python文件,例如main.py,并编写代码。这里以一个简单的Flask Web应用为例:
from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello_world():return 'Hello, World!'if __name__ == '__main__':app.run()
接下来,在PyCharm中,点击“File”菜单,选择“Settings”。在左侧面板选择“Project: [项目名称]”,然后点击“Python Interpreter”选项卡。在右侧面板中,如果项目使用虚拟环境,切换到虚拟环境,并点击“+”按钮添加所需的第三方库(例如Flask)。
安装PyInstaller
打开PyCharm的终端(Terminal),输入以下命令安装PyInstaller:
pip install pyinstaller
在PyCharm中,通常不需要额外配置PyInstaller,除非有特定的需求。
三、打包项目
打包为可执行文件
在终端中,导航到项目目录。输入以下命令打包项目:
pyinstaller --onefile main.py
这将生成一个dist目录,其中包含打包后的可执行文件。
另一种打包方式(使用setup.py)
你也可以通过创建setup.py文件来打包项目。假设你的项目名为myproject,项目目录结构如下:
myproject/
├── mymodule/
│ └── __init__.py
├── setup.py
└── README.md
在myproject目录中创建setup.py文件,并添加以下内容:
from setuptools import setup, find_packagessetup(name='myproject', # 项目的名称version='0.1', # 项目的版本packages=find_packages(), # 自动找到项目中的所有包install_requires=[], # 项目依赖的其他库description='A simple Python project', # 项目描述author='Your Name', # 作者名author_email='your.email@example.com', # 作者邮箱url='# 项目链接'
)
在终端中切换到myproject目录,然后运行以下命令进行打包:
python setup.py sdist bdist_wheel
运行该命令后,你会在dist目录中看到生成的.tar.gz和.whl文件。
四、配置服务器环境
确保服务器安装了Python环境
使用SSH连接到服务器,并检查Python版本:
ssh username@your_server_ip
python --version
安装项目依赖
如果项目使用了第三方库,需要在服务器上安装这些库。例如,如果使用了Flask:
pip install flask
五、上传可执行文件到服务器
使用scp命令上传文件
使用scp命令将打包后的可执行文件上传到服务器:
scp dist/main username@your_server_ip:/path/to/destination
或者,如果你使用.whl文件,可以先通过pip在服务器上安装:
scp dist/myproject-0.1-py3-none-any.whl username@your_server_ip:/path/to/destination
ssh username@your_server_ip
pip install /path/to/destination/myproject-0.1-py3-none-any.whl
六、在服务器上运行项目
登录到服务器
ssh username@your_server_ip
导航到可执行文件所在的目录
cd /path/to/destination
运行可执行文件
./main
如果你的Flask应用需要运行在特定端口,确保服务器的防火墙已经开放了相应端口。如果想让应用在后台运行,可以使用nohup命令:
nohup ./main &
七、通过PyCharm直接部署和运行(可选)
除了手动打包和上传,你也可以通过PyCharm直接部署和运行项目。以下是详细步骤:
配置SSH解释器
在PyCharm右下角,点击“<无解释器>” -> “添加新的解释器” -> “SSH”。通过SSH连接服务器,配置虚拟环境。
配置部署
点击“工具” -> “部署” -> “配置”。选择对应的服务器,点击“映射”来配置本地项目路径和服务器上的路径。
上传代码
配置完成后,你可以在PyCharm中直接看到服务器的文件夹,并将代码上传到服务器。确保项目文件完整上传。
在服务器上运行
打开服务器远程终端,激活虚拟环境,切换到项目目录,安装项目依赖,然后运行主程序文件。例如:
source /path/to/venv/bin/activate
cd /path/to/project
pip install -r requirements.txt
python main.py
或者,对于Django项目:
python manage.py runserver 0.0.0.0:8000
为了让程序在后台运行,可以使用nohup命令:
nohup python main.py &
八、注意事项
防火墙和端口
如果你的应用需要特定端口,确保服务器防火墙已经开放该端口。
后台运行
使用nohup命令让应用在后台运行,并记录日志到nohup.out文件中。
数据库交互
如果项目需要与数据库交互,需要在服务器上安装相应的数据库驱动程序,并配置连接信息。
自动上传
建议配置PyCharm的自动上传功能,以便在本地修改代码后自动同步到服务器。
示例项目总结
通过以上步骤,我们成功创建了一个简单的Flask Web应用,并将其打包并运行到了服务器上。以下是整个过程的简要总结:
- 在PyCharm中创建并设置Python项目。
- 编写项目代码并配置依赖。
- 使用PyInstaller或setup.py打包项目。
- 配置服务器环境,安装Python和必要的第三方库。
- 上传打包后的可执行文件或安装文件到服务器。
- 在服务器上运行项目,并配置防火墙和端口。
这个过程不仅帮助我们学习了一些基本的命令和工具的使用,还强化了对项目部署流程的理解。掌握这些技能后,你将能够更专业地进行程序开发和管理。
希望这篇指南对你有所帮助,祝你项目部署顺利!
相关文章:
PyCharm中Python项目打包并运行到服务器的简明指南
目录 一、准备工作 二、创建并设置Python项目 创建新项目 配置项目依赖 安装PyInstaller 三、打包项目 打包为可执行文件 另一种打包方式(使用setup.py) 四、配置服务器环境 五、上传可执行文件到服务器 六、在服务器上运行项目 配置SSH解释…...
cocos creator 3.8 合成大西瓜Demo 11
界面上的Node节点: 背景 警戒线 三面墙 初始位置节点 水果容器 先分组吧,墙 地板 水果 创建预制体 先挂一个脚本 刚体碰撞器先弄上再说 import { _decorator, Component, Node } from cc; const { ccclass, property } _decorator;ccclass(FruitData) e…...
Vue前端开发-动态插槽
不仅父组件可以通过插槽方式访问并控制子组件传入的数据,而且可以控制传入父组件时插槽的名称,从而使不同的插槽根据名称的不同,使用场景也不同,例如在一个小区详细页中,可以根据小区类型,调用不同名称的详…...
使用easyexcel导出复杂模板,同时使用bean,map,list填充
背景 在使用easyexcel导出时,如果遇到一个模板中同时存在 一部分是实体类中的字段,另外部分是列表的字段,需要特殊处理一下,比如下面的模板: 这里面 user, addr 是实体类(或者map)…...
最大值(Java Python JS C++ C )
题目描述 给定一组整数(非负),重排顺序后输出一个最大的整数。 示例1 输入:[10,9] 输出:910 说明:输出结果可能非常大,所以你需要返回一个字符串而不是整数。 输入描述 数字组合 输出描述 最大的整数 示例1 输入 10 9输出 910解题思路 题目要求 是:给定一…...
17.5k Star,ThingsBoard 一款开源、免费、功能全面的物联网 IoT 平台 -慧知开源充电桩平台
项目介绍 ThingsBoard是一个开源、免费、功能全面、灵活易用的物联网(IoT)平台,专注于数据收集、处理、可视化以及设备管理。它提供了一个全面的解决方案,用于构建和管理物联网应用。支持从各种设备收集数据,通过内置…...
《C++ 与神经网络:自动微分在反向传播中的高效实现之道》
在深度学习蓬勃发展的今天,神经网络成为了众多领域的核心技术驱动力。而反向传播算法作为训练神经网络的关键手段,其背后的自动微分技术的高效实现尤为重要,特别是在 C 这样追求性能与内存控制极致的编程语言环境下。 神经网络通过大量的参数…...
【CSS】设置文本超出N行省略
文章目录 基本使用 这种方法主要是针对Webkit浏览器,因此可能在一些非Chrome浏览器中不适用。 基本使用 例如:设置文本超出两行显示省略号。 核心代码: .ellipsis-multiline {display: -webkit-box; -webkit-box-orient: vertical; /* 设置…...
open-instruct - 训练开放式指令跟随语言模型
文章目录 关于 open-instruct设置训练微调偏好调整RLVR 污染检查开发中仓库结构 致谢 关于 open-instruct github : https://github.com/allenai/open-instruct 这个仓库是我们对在公共数据集上对流行的预训练语言模型进行指令微调的开放努力。我们发布这个仓库,并…...
DI依赖注入详解
DI依赖注入 声明了一个成员变量(对象)之后,在该对象上面加上注解AutoWired注解,那么在程序运行时,该对象自动在IOC容器中寻找对应的bean对象,并且将其赋值给成员变量,完成依赖注入。 AutoWire…...
TDengine在debian安装
参考官网文档: 官网安装文档链接 从列表中下载获得 Deb 安装包; TDengine-server-3.3.4.3-Linux-x64.deb (61 M) 进入到安装包所在目录,执行如下的安装命令: sudo dpkg -i TDengine-server-<version>-Linux-x64.debNOTE 当…...
【C#设计模式(15)——命令模式(Command Pattern)】
前言 命令模式的关键通过将请求封装成一个对象,使命令的发送者和接收者解耦。这种方式能更方便地添加新的命令,如执行命令的排队、延迟、撤销和重做等操作。 代码 #region 基础的命令模式 //命令(抽象类) public abstract class …...
XGBoost库介绍:提升机器学习模型的性能
XGBoost库介绍:提升机器学习模型的性能 在机器学习领域,模型的准确性和训练效率是最为关注的两大因素。特别是在处理大量数据和复杂任务时,传统的机器学习算法可能无法满足高效和准确性的需求。XGBoost(eXtreme Gradient Boostin…...
网络安全构成要素
一、防火墙 组织机构内部的网络与互联网相连时,为了避免域内受到非法访问的威胁,往往会设置防火墙。 使用NAT(NAPT)的情况下,由于限定了可以从外部访问的地址,因此也能起到防火墙的作用。 二、IDS入侵检…...
SpringMVC——SSM整合
SSM整合 创建工程 在pom.xml中导入坐标 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_…...
Windows系统电脑安装TightVNC服务端结合内网穿透实现异地远程桌面
文章目录 前言1. 安装TightVNC服务端2. 局域网VNC远程测试3. Win安装Cpolar工具4. 配置VNC远程地址5. VNC远程桌面连接6. 固定VNC远程地址7. 固定VNC地址测试 前言 在追求高效、便捷的数字化办公与生活的今天,远程桌面服务成为了连接不同地点、不同设备之间的重要桥…...
【ubuntu24.04】GTX4700 配置安装cuda
筛选显卡驱动显卡驱动 NVIDIA-Linux-x86_64-550.135.run 而后重启:最新的是12.6 用于ubuntu24.04 ,但是我的4700的显卡驱动要求12.4 cuda...
Spring Boot 动态数据源切换
背景 随着互联网应用的快速发展,多数据源的需求日益增多。Spring Boot 以其简洁的配置和强大的功能,成为实现动态数据源切换的理想选择。本文将通过具体的配置和代码示例,详细介绍如何在 Spring Boot 应用中实现动态数据源切换,帮…...
MySQL技巧之跨服务器数据查询:进阶篇-从A服务器的MySQ数据库复制到B服务器的SQL Server数据库的表中
MySQL技巧之跨服务器数据查询:进阶篇-从A服务器的MySQ数据库复制到B服务器的SQL Server数据库的表中 基础篇已经描述:借用微软的SQL Server ODBC 即可实现MySQL跨服务器间的数据查询。 而且还介绍了如何获得一个在MS SQL Server 可以连接指定实例的MyS…...
大语言模型LLM的微调中 QA 转换的小工具 xlsx2json.py
在训练语言模型中,需要将文件整理成规范的文档,因为文档本身会有很多不规范的地方,为了训练的正确,将文档进行规范处理。代码的功能是读取一个 Excel 文件,将其数据转换为 JSON 格式,并将 JSON 数据写入到一…...
超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
goreplay
1.github地址 https://github.com/buger/goreplay 2.简单介绍 GoReplay 是一个开源的网络监控工具,可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。 3.出现背景 随着应用程序的增长,测试它所需的工作量也会呈指数级增长。GoRepl…...
2.2.2 ASPICE的需求分析
ASPICE的需求分析是汽车软件开发过程中至关重要的一环,它涉及到对需求进行详细分析、验证和确认,以确保软件产品能够满足客户和用户的需求。在ASPICE中,需求分析的关键步骤包括: 需求细化:将从需求收集阶段获得的高层需…...
