Ubuntu 中通过源码安装 Python3.x 环境
最近在个人前后端分离项目时候, 后端接口程序 fastapi, 在部署的时候, 需要 Pyhton3.8 以上的环境, 但 ubuntu 默认的是 2.7 于是想通过源码安装的方式进行环境搭建.
下载
官网下载二进制源码安装包: https://www.python.org/downloads/source/
wegt https://www.python.org/ftp/python/3.8.18/Pyhton-3.8.18tgz
当然也可以自己手动去官网下载, 反正最终是源码的压缩包即可.
假设下载好的安装包为: Python-3.8.18.tgz
安装
解压安装包
tar zxvf Python-3.8.18.tgz
创建安装目录
mkdir /usr/local/python3.8
指定安装目录
cd Python-3.8.18
./configure --prefix=/usr/local/pyhton3.8
加速构建过程
-- 我的服务器是2核, 充分利用, 如果不知道可通过 nproc 查看
make -j 2
编码源码
-- 可勿用默认的 make install 以免覆盖一些默认文件
sudo make altinstall
设置软链接
ubuntu 默认是有 python2.7 环境的, 直接通过覆盖的方式将其换成 3.8即可
ln -sf /usr/local/python3.8/bin/pyhton3.8 /usr/bin/pyhton
ln -sf /usr/local/python3.8/bin/pip3.8 /usr/bin/pip
验证
python -V
Python 3.8.18
pip -V
pip 20.2.1 from /home/youge/venv/fastapi/lib/python3.8/site-packages/pip (python 3.8)
创建虚拟环境
因为要通过 uvicorn 服务器来运行后端程序, 隐藏需要在虚拟环境中来执行, 这里用 python 内置的即可
可以创建一个名为 venv
的目录来存放所有虚拟环境.
mkdir venv
进入该目录下, 通过一行命令即可创建虚拟环境, 例如这里要建的环境名为 fastapi
python -m venv fastapi
然后当前目录就会出现一个名为 fastapi 的目录, 通过 source
命令启动其 bin 下的 activate 即可.
source bin/activate
这时候就进入了虚拟环境, 准备启动项目了.
项目启动
进入项目根目录下, 例如项目启动文件是 main.py
, 可以直接通过 uvicorn 服务器启动, 然后将通过 nohup其挂到后台执行即可.
nohup uvicorn main:app --host 0.0.0.0 --port 8000 --workers 2 > /dev/null 2>&1 &
这里的 main
表示项目启动文件是 main.py
, 这里 app
表示项目实例, 即 mian.py
里面有一行是,
app = FastAPI()
然后指定主机名 0.0.0.0
表示监听所有可用网络接口, 端口为 8000
, 并启动两个进程.
nohup 表示将此任务挂到后台运行, > /dev/null 2>&1 &
表示不存储运行日志, 就个人小项目看啥日志, 直接改代码不就行啦.
可通过 lsof -i:xxx
查看端口占用情况:
(fastapi) youge@VM-12-5-ubuntu:~/venv/test$ lsof -i:8000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
uvicorn 6933 youge 3u IPv4 679082892 0t0 TCP *:8000 (LISTEN)
python 6940 youge 3u IPv4 679082892 0t0 TCP *:8000 (LISTEN)
python 6941 youge 3u IPv4 679082892 0t0 TCP *:8000 (LISTEN)
(fastapi) youge@VM-12-5-ubuntu:~/venv/test$
可以看到确实有了 3个进程在监听 8000 端口. 后续要更新的话需要先停掉进程PID.
kill -9 6933
补充
项目目录设计
main.py
app
模块01
- __ init __.py
- views.py 接口逻辑
模块02
- __ init __.py
- views.py 接口逻辑
core
- __ init __ .py
- database.py 封装数据库实例的, 输出 db 实例给接口 import, 然后执行 db.execute (原生sql)
- oauth.py 封装登录认证的, 即 JWT 认证
- xxx sdk.py 类似一些图片上传 oss 等对接外部服务的封装
Tool
gen_hashed_valu.py
... 类似工具性, 测试啥的东西
最后可通过项目的 main.py
可以看看
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
import uvicorn
from app.admin import user
from app.goods import goods
from app.index import index
from app.image import image
from app.notice import notice
app = FastAPI(
title="宇宙通-接口文档",
version='1.0.0',
docs_url='/docs'
)
# 演示接口用
# @app.get('/api/docs')
# def index1():
# return { 'msg': '欢迎回家!'}
# 路由分发, 类似 flask 里面的 blueprint
app.include_router(user, prefix='/api/user', tags=['用户模块'])
app.include_router(index, prefix='/api/index', tags=['首页模块'])
app.include_router(goods, prefix='/api/goods', tags=['商品模块'])
app.include_router(image, prefix='/api/image', tags=['图库模块'])
app.include_router(notice, prefix='/api/notice', tags=['公告模块'])
# app.include_router(test, prefix='/test', tags=['测试模块'])
# 允许跨域
app.add_middleware(
CORSMiddleware,
# 允许跨域的源列表,例如 ["http://www.example.org"] 等等,["*"] 表示允许任何源
allow_origins=["*"],
allow_credentials=False,
allow_methods=["*"],
allow_headers=["*"],
)
if __name__ == '__main__':
uvicorn.run('main:app', host='0.0.0.0', port=8000, reload=True, workers=1)
先到这吧, 后续来拆解具体项目细节, 这里只是环境部署做个笔记.
Ubuntu 中通过源码安装 Python3.x 环境的更多相关文章
- 在centos6.7通过源码安装python3.6.7报错“zipimport.ZipImportError: can't decompress data; zlib not available”
在centos6.7通过源码安装python3.6.7报错: zipimport.ZipImportError: can't decompress data; zlib not available 从 ...
- centos7中通过源码安装postgresql13.6
下载地址:https://www.postgresql.org/ftp/source/ 0.安装相关依赖库 centos依赖包下载地址:https://developer.aliyun.com/pac ...
- 通过源码安装PostgresSQL
通过源码安装PostgresSQL 1.1 下载源码包环境: Centos6.8 64位 yum -y install bison flex readline-devel zlib-devel yum ...
- Ubuntu 14.04 卸载通过源码安装的库
cd cere-solvermkdir buildcd buildcmake ..sudo makesudo make install 卸载通过以上方式源码安装的库 再次进入buildsudo mak ...
- 在CentOS7(虚拟机)下通过源码安装Postgresql10以及基本配置
操作系统:CentOS7 安装文件:postgresql-10.0.tar.gz 系统环境:gcc.Python 1:源码安装 [postgres@localhost ~]# tar zxvf pos ...
- 在 Ubuntu 12.04 上通过源码安装 Open vSwitch (OVS)
安装 Ubuntu 12.04, 而且更新系统 apt-getupdate; apt-getupgrade; 安装所需的package apt-get install automake autocon ...
- Ubuntu 16.04通过源码安装QUEM虚拟机
下载编译安装: wget http://download.qemu-project.org/qemu-2.9.0.tar.xz tar xvJf qemu-2.9.0.tar.xz cd qemu-2 ...
- linux通过源码安装nodejs
1.下载nodejs源码,下载地址:https://nodejs.org/en/download/ 2.下载回来后,解压缩,ubuntu系统ctrl + alt +T 打开终端 假如tar.gz压缩包 ...
- 【Git】CentOS7 通过源码安装Git
yum源仓库里的Git版本更新不及时,最新版的Git是1.8.3,但是官方的最新版早已经更新到2.9.5.想要安装最新版本Git,只能下载源码进行安装 建议最好更新git为较新版本,便于使用 1.查看 ...
- 通过源码安装RYU控制器
目录 安装 测试 安装 安装pip3 sudo apt-get install python3-pip 获取ryu源码 git clone https://github.com/osrg/ryu.gi ...
随机推荐
- ATT&CK实战系列(一)
环境下载 下载靶场环境,并导入虚拟机分别是win2003.win7.winserver2008 配置网络 虚拟机--编辑--虚拟机网络编辑器--添加网络VMnet2--仅主机模式分配的地址是192.1 ...
- Spark - [03] 资源调度模式
题记部分 一.Local模式 1.1.概述 Local模式就是运行在一台计算机上的模式,通常就是用于在本机上练手和测试的. 可以通过以下几种方式设置Master (1)local:所欲计算都运行在一个 ...
- JavaGUI - [02] 案例Demo
题记部分 一.WindowDemo 窗口 package com.harley; import java.awt.*; /** * @author harley * @date 2024/05/06 ...
- 【vulhub】redis 4-unacc (redis未授权访问)
渗透环境 攻击机: IP: 192.168.66.130(Kali) 漏洞收录于:vulhub/redis/4-unacc 涉及知识点:redis未授权访问 影响版本:redis 版本 < ...
- CentOS7安装部署ClickHouse(单机版&&集群部署)
1.1 什么是ClickHouse ClickHouse 是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报 ...
- Docker 容器的数据卷 以及 数据卷容器
Docker 容器删除后,在容器中产生的数据还在吗? 答案是 不在 Docker 容器和外部机器可以直接交换文件吗? 在没有数据卷的情况下,答案是 不可以 如下图:外部机器:Windows系统(自己的 ...
- DeepSeek 不太稳定?那就搭建自己的 DeepSeek 服务
概述 DeepSeek-R1 发布 DeepSeek 在 2025 年给我们送来一份惊喜,1 月 20 号正式发布第一代推理大模型 DeepSeek-R1.这个模型在数学推理.代码生成和复杂问题解决等 ...
- @autowired注解报错原因及解决办法
@autowired 注入dao层的时候,标红报错,但不影响编译使用 按照严格的spring注解方式在dao层加入@Repository注解
- AI回答(deepseek):vue3制作手机屏网站
使用 Vue 3 制作一个适合手机屏幕的网站(移动端网站)是一个非常常见的需求.以下是一个完整的指南,帮助你从零开始构建一个移动端优化的 Vue 3 项目. 1. 创建 Vue 3 项目 使用 Vit ...
- event.stopPropagation
先记录一下坑: var btn = test.getElementsByTagName('label'); btn[0].active = 'active'; ...