linux编译安装python的全过程,pip python不与linux系统环境混乱

news/2024/4/19 11:22:53/文章来源:https://blog.csdn.net/LQ_001/article/details/130299900

因为使用要求,使得我需要在linux环境下安装一个独立的python环境,不干扰其他环境。

预安装

在安装python之前,请在linux系统下安装下面这些包:

sudo apt-get install namelibssl-dev libcurl4 libcurl4-openssl-dev
zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel 
readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel

这些包能装多少是多少

一,下载python资源包

两种下载方式二选一,谁快选谁

linux下载:

不同的python版本,安装过程是一样的,下载其他python版本的时候直接修改下面命令的网址链接的版本号也是可以的

wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz

windows下载:

建议先在windows下载,然后把这个包放到linux系统中,因为linux下载过程比较慢。
windows下载链接:https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz

因为我电脑和linux设备在同一wifi下,所以直接使用scp命令在主机间复制,我的复制命令格式:

scp C:\Users\LQ\Downloads\Python-3.6.9.tgz lq@192.168.1.100:/home/lq/download

二,解压python资源包,配置,编译,安装

在Linux中新建一个文件夹,用于放置编译过后的python文件
大部分通用做法是-------------- /usr/local/------------------文件夹下新建python3.6.9文件夹
我这里为了我的要求在---------/home/lq/mytools/--------文件夹下新建python3.6.9文件夹

开始解压python压缩包
解压命令:

tar -zxvf Python-3.6.9.tgz

继续

# 进入解压后的目录
cd Python-3.6.9# 配置python路径,大概1-3分钟
./configure --prefix=/home/lq/mytools/python3.6.9参考配置参数:
--enable-optimizations (编译一小时)
–with-ssl(遇到ssl问题使用)# 编译,大概4-8分钟
make# 安装,大概3-5分钟
make install

注意看最后一行,pip和setuptools 必须要成功,才能算安装成功。

到这里,python就已经安装到linux环境中了,只是还没有调用起来。
进入设置的安装位置 /home/lq/mytools/python3.6.9
查看一些关键文件:python3.6 pip3 都在的话进行下一步

可以开始配置了

二,与系统环境适配

将我们新编译的python文件与linux目录用软连接的方式连接起来

目的是

让系统命令-----python3,python--------只使用我的 /home/lq/mytools/python3.6.9/bin/python3
让系统命令-----pip3,pip------------------只使用我的 /home/lq/mytools/python3.6.9/bin/pip3

sudo ln -s /home/lq/mytools/python3.6.9/bin/python3  /usr/bin/python3
sudo ln -s /home/lq/mytools/python3.6.9/bin/python3  /usr/bin/python
ls -l /usr/bin/python3 sudo ln -s /home/lq/mytools/python3.6.9/bin/pip3 /usr/bin/pip3
sudo ln -s /usr/bin/pip3 /usr/bin/pip

OK了!

软连接这一步容易出的一些问题:

1.如何取消软连接

办法:使用命令sudo unlink name

2.软连接被占用

办法:千万不要直接删除软连接,删除软连接会把软连接对应的文件一起删除

3.想要连接的名字已经存在

办法:比如想要链接名字 python3 但是已经存在 python3 文件了。这个时候软连接就会失败。
可以把重名的原文件备份一下,为软连接名字留出位置。

三,最后一步,修改环境变量生效

在用户根目录

vi .bashrc

在文件的末尾,写入新编译的python版本路径,添加内容如下:

export PYTHON_HOME=/home/lq/mytools/python3.6.9
export PATH=$PYTHON_HOME/bin:$PATH

wq保存退出后

运行下面命令使刚才的变量生效:

 source .bashrc

四,验证

四个命令均显示自己的设置的软连接路径,说明安装成功!

xxxxxxxxxx:~ $ pip -V
pip 21.3.1 from /home/lq/mytools/python3.6.9/lib/python3.6/site-packages/pip (python 3.6)xxxxxxxxxx:~ $ pip3 -V
pip 21.3.1 from /home/lq/mytools/python3.6.9/lib/python3.6/site-packages/pip (python 3.6)xxxxxxxxxx:~ $ which python
/usr/bin/pythonxxxxxxxxxx:~ $ which python3
/home/lq/mytools/python3.6.9/bin/python3

这一步容易出问题的地方:

我环境配置了,也软连接了,为什么 pip -v 还是以前的python版本的路径

办法:python环境配置以后,也对pip进行配置一下,运行命令:
上面123456789步骤都做好了才用这个命令。

alias pip='/home/lq/mytools/python3.6.9/bin/pip3'

尾言

python的安装完毕了,但其实这还不算结束,对于一般用户来说只是使用一下python 的基础功能,这篇博客就够用了。就算结束了。

但要自己安装的 pip 包的用户,可能会遇到一些问题(pip不能用)。
我将在下一章博客中讲解如何解决pip包的问题。
下一章 pip常见问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_103630.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

27-Servlet执行原理

目录 1.Tomcat详解 ①接收请求: ②根据请求计算响应: ③返回响应: 2.Tomcat执行流程 2.1.Tomcat 初始化流程 2.2.Tomcat 处理请求流程 2.3.Servlet 的 service 方法的实现 在 Servlet 的代码中并没有写 main ⽅法,那么对应…

【C++关联容器】map的成员函数

目录 map 1. 构造、析构和赋值运算符重载 1.1 构造函数 1.2 析构函数 1.3 赋值运算符重载 2. 迭代器 3. 容量 4. 元素访问 5. 修改器 6. 观察者 7. 操作 8. 分配器 map map是关联容器,它按照特定的顺序存储由关键字值和映射值的组合形成的元素。 在一…

【Springboot系列】项目启动时怎么给mongo表加自动过期索引

1、前言 在之前操作mongo的过程中,都是自动创建,几乎没有手动创建过表。 这次开发中有张表数据量大,并且不是特别重要,数据表维护一个常见的问题是过期数据没有被及时清理,导致数据量过大,查询变得缓慢。…

LeetCode-242. 有效的字母异位词

题目链接 LeetCode-242. 有效的字母异位词 题目描述 题解 题解一(Java) 作者:仲景 首先,满足条件的情况下,两个字符串的长度一定是相等的,不相等一定不满足条件 使用Hash表来存储字符串s中各个字符出现的…

Spring Security实战(九)—— 使用Spring Security OAuth实现OAuth对接

一、OAuth2.0介绍 OAuth2.0是一种授权协议,允许用户授权第三方应用程序代表他们获取受保护的资源,如个人信息或照片等。它允许用户授权访问他们存储在另一个服务提供商上的资源,而无需将其凭据共享给第三方应用程序。OAuth2.0协议建立在OAuth…

【具体到每一步】从0制作一个uniapp的新闻类页面(界面篇)

目录 项目初始化 / 基础配置 项目创建 配置路由/页面/tabbar pages.json配置tabbar 配置图标/静态资源 导航栏和字体颜色 scroll-view实现横向滚动条样式 公共模块定义components组件 新建组件 使用组件 组件里的结构 布局个人中心页面 组件差异化处理 数据传递 导航…

DevExpress:报表在winform窗体上显示(使用documentViewer控件)

一:控件认识 documentViewer(版本DX22.2),老版本中的可能是printControl(工具箱面板中可能找不到),通过官网搜索发现,这个控件现在继承于documentViewer这个控件。因此,使用documen…

Unity入门(一)

Unity Unity是一套完善体系与编辑器的跨平台游戏开发工具,也可以称之为游戏引擎。游戏引擎是指一些编写好的可以重复利用的代码与开发游戏所用的各功能编辑器。 基于C#编程,易上手,高安全性独特的面向组件游戏开发思想让游戏开发更加简单易…

【神经网络】tensorflow实验7--回归问题

1. 实验目的 ①掌握一元线性回归模型的实现方法 ②掌握多元线性回归模型的实现方法 ③掌握三维数据可视化方法 2. 实验内容 ①使用TensorFlow建立一元线性回归模型,使用商品房销售数据训练模型,并使用训练好的模型预测房价 ②使用TensorFlow建立多元线…

十、ElasticSearch 实战 - 源码运行

一、概述 想深入理解 Elasticsearch,了解其报错机制,并有针对性的调整参数,阅读其源码是很有必要的。此外,了解优秀开源项目的代码架构,能够提高个人的代码架构能力 阅读 Elasticsearch 源码的第一步是搭建调试环境&…

思维导图从入门到大神

思维导图怎么做?思维导图是一种发散性思维的图。在我们生活的方方面面都有运用。无论是工作、学习、还是生活,我们都可以用到它。那思维导图是怎么绘制的呢?其实非常简单,只要这简单的几步 1、首先在绘制思维导图前,我…

【网络】-- UDP协议

目录 传输层 再谈端口号 端口号范围划分 认识知名端口号(Well-Know Port Number) 两个问题 netstat pidof UDP协议 UDP的特点 UDP的缓冲区 UDP使用注意事项 基于UDP的应用层协议 传输层 负责数据能够从发送端传输接收端。 再谈端口号 端…

Codeforces Round 861 (Div. 2)(A~D)

A. Lucky Numbers 给出边界l和r,在区间[l, r]之间找到幸运值最大的数字。一个数字的幸运值被定义为数位差的最大值,即数字中最大的数位和最小的数位的差。 思路:因为涉及到至少两位,即个位和十位变化最快,最容易得到相…

07 - 进程创建大盘点

---- 整理自狄泰软件唐佐林老师课程 查看所有文章链接:(更新中)Linux系统编程训练营 - 目录 文章目录 1. 进程创建回顾2. 再论进程创建2.1 思考2.2 vfork()深度分析2.3 vfork()要点分析2.4 fork()的现代优化2.5 编程实验:fork() &…

被遗忘的Java关键字:transient

前言 今天在看项目代码时候,看到了下面这样一行代码,用transient修饰了一个变量,主要作用是做一个全局开关。说实话我是第一次看到这个关键字。激发了我的好奇心,所以就了解一下这是何方神圣。 /*** 全局开关*/public static tran…

最新研究:可审计的具有拜占庭鲁棒的联邦学习方案

本人新论文,可免费下载:https://download.csdn.net/download/liangyihuai/87727720 Y. Liang, Y. Li and B. -S. Shin, “Auditable Federated Learning With Byzantine Robustness,” in IEEE Transactions on Computational Social Systems, doi: 10.…

浅谈拉格朗日插值法

浅谈拉格朗日插值法 好像FFT要用到,所以就学习一手 文章目录 浅谈拉格朗日插值法什么是插值拉格朗日插值法 什么是插值 在离散数据的基础上补插连续的函数,使得这条连续函数经过所有离散数据点,这个过程就叫插值。其意义在于: …

论文阅读:DLME = Deep Local-flatness Manifold Embedding

Author: Zelin Zang, Siyuan Li, Di Wu and Stan Z Li. 1-4: Westlake University 摘要 流形学习(ML, Manifold learning)旨在从高维数据中识别低维结构和嵌入,然而我们发现现有工作在采样不足的现实数据集上效果不佳。一般的ML方法对数据结…

LNMP网站框架搭建

1. Nginx的工作原理 php-fpm.conf 是控制php-fpm守护进程的 php.ini是php解析器 工作进程: 1.客户端通过域名进行请求访问时,会找Nginx对应的虚拟主机 2. Nginx对该请求进行判断,如果是静态请求,Nginx会自行处理,并将处理结果返…

【C++】了解设计模式、 stackqueue的使用与模拟实现

文章目录 1.设计模式2.stack1.stack的使用1.stack的结构2.stack的接口 2.stack的模拟实现1.stack的结构2.接口实现 3.queue1.queue的使用1.queue的结构3.queue的接口 2.queue的模拟实现1.queue的结构2.接口实现 4.了解deque1.deque的原理介绍2.deque的底层结构3.deque的迭代器设…