Pip,whl,源码编译安装Python库

pip安装

pip 是 Python 包管理工具,用于安装和管理 Python 包。pip 是 Python 开发中不可或缺的工具,能够帮助开发者轻松地管理项目所需的各种库和依赖。无论是安装新包、升级现有包还是卸载不需要的包,pip 都提供了简单而强大的命令来完成这些任务。基本功能有:

安装包:从 Python 包索引(Python Package Index, PyPI)或其他源安装 Python 包。

pip install package_name

升级包:升级已安装的包到最新版本。

pip install --upgrade package_name

卸载包:卸载已安装的包。

pip uninstall package_name

列出已安装的包:显示所有已安装的包及其版本。

pip list

安装指定版本的包:可以安装特定版本的包。

pip install package_name==1.0.0

从文件安装:可以从 requirements.txt 文件安装包,该文件列出了所有需要的包及其版本。

pip install -r requirements.txt

查看包信息:查看某个包的详细信息。

pip show package_name

搜索包:在 PyPI 上搜索包。

pip search package_name

配置源:可以配置使用国内的镜像源来加快下载速度。

pip install package_name -i https://pypi.tuna.tsinghua.edu.cn/simple

在requirements.txt中配置源。

# Specify the primary package index URL
--index-url https://pypi.tuna.tsinghua.edu.cn/simple

# Specify additional package index URLs
--extra-index-url https://download.pytorch.org/whl/cpu
--extra-index-url https://developer.download.nvidia.com/compute/redist

absl-py==1.3.0
antlr4-python3-runtime==4.9.3
astunparse==1.6.3
cachetools==5.2.0
certifi==2022.9.24
charset-normalizer==2.1.1
dlio_profiler_py==0.0.3
flatbuffers==23.5.26
gast==0.4.0
google-auth==2.14.1
google-auth-oauthlib==0.7.0
  • –index-url:设置主要的包索引 URL,pip 会首先从这个 URL 中搜索并安装包。
  • –extra-index-url:设置额外的包索引 URL,如果在主要包索引 URL 中找不到包,pip 会从这些 URL 中搜索并安装包。

whl文件安装

没网的情况下,可以去pypi官网搜索需要的python库下载对应的whl文件进行安装。注意,此时下载的whl安装包一定要是符合自己Python版本和系统处理器位数的版本,下载的库名中cp39代表python3.9版本,想知道系统具体可以安装哪些标签的.whl文件,可以使用pip debug --verbose,兼容的文件标签就会显示。

[fakerth@localhost ~]$ pip debug --verbose
pip version: pip 23.0.1 from /usr/local/python38/lib/python3.8/site-packages/pip (python 3.8)
sys.version: 3.8.18 (default, Nov 17 2023, 18:40:57) 
[GCC 8.5.0 20210514 (Red Hat 8.5.0-20)]
sys.executable: /usr/local/python38/bin/python3.8
sys.getdefaultencoding: utf-8
sys.getfilesystemencoding: utf-8
locale.getpreferredencoding: UTF-8
sys.platform: linux
sys.implementation:
  name: cpython
'cert' config value: Not specified
REQUESTS_CA_BUNDLE: None
CURL_CA_BUNDLE: None
pip._vendor.certifi.where(): /usr/local/python38/lib/python3.8/site-packages/pip/_vendor/certifi/cacert.pem
pip._vendor.DEBUNDLED: False
vendored library versions:
  CacheControl==0.12.11
  colorama==0.4.6
  distlib==0.3.6
  distro==1.8.0
  msgpack==1.0.4
  packaging==21.3
  platformdirs==2.6.2
  pyparsing==3.0.9
  pyproject-hooks==1.0.0
  requests==2.28.2
  certifi==2022.12.07
  chardet==5.1.0
  idna==3.4
  urllib3==1.26.14
  rich==12.6.0 (Unable to locate actual module version, using vendor.txt specified version)
  pygments==2.13.0
  typing_extensions==4.4.0 (Unable to locate actual module version, using vendor.txt specified version)
  resolvelib==0.8.1
  setuptools==44.0.0 (Unable to locate actual module version, using vendor.txt specified version)
  six==1.16.0
  tenacity==8.1.0 (Unable to locate actual module version, using vendor.txt specified version)
  tomli==2.0.1
  webencodings==0.5.1 (Unable to locate actual module version, using vendor.txt specified version)
Compatible tags: 543
  cp38-cp38-manylinux_2_28_x86_64
  cp38-cp38-manylinux_2_27_x86_64
  cp38-cp38-manylinux_2_26_x86_64
  cp38-cp38-manylinux_2_25_x86_64
  cp38-cp38-manylinux_2_24_x86_64
  cp38-cp38-manylinux_2_23_x86_64
  cp38-cp38-manylinux_2_22_x86_64
  cp38-cp38-manylinux_2_21_x86_64
  cp38-cp38-manylinux_2_20_x86_64
  cp38-cp38-manylinux_2_19_x86_64
  cp38-cp38-manylinux_2_18_x86_64
  cp38-cp38-manylinux_2_17_x86_64
  cp38-cp38-manylinux2014_x86_64
  cp38-cp38-manylinux_2_16_x86_64
  cp38-cp38-manylinux_2_15_x86_64
  cp38-cp38-manylinux_2_14_x86_64
  cp38-cp38-manylinux_2_13_x86_64
  cp38-cp38-manylinux_2_12_x86_64
  cp38-cp38-manylinux2010_x86_64
  cp38-cp38-manylinux_2_11_x86_64
  cp38-cp38-manylinux_2_10_x86_64
  cp38-cp38-manylinux_2_9_x86_64
  cp38-cp38-manylinux_2_8_x86_64
  cp38-cp38-manylinux_2_7_x86_64
  cp38-cp38-manylinux_2_6_x86_64
  cp38-cp38-manylinux_2_5_x86_64
  cp38-cp38-manylinux1_x86_64
  cp38-cp38-linux_x86_64
  cp38-abi3-manylinux_2_28_x86_64
  cp38-abi3-manylinux_2_27_x86_64
  cp38-abi3-manylinux_2_26_x86_64
  cp38-abi3-manylinux_2_25_x86_64
  cp38-abi3-manylinux_2_24_x86_64
  cp38-abi3-manylinux_2_23_x86_64
  cp38-abi3-manylinux_2_22_x86_64
  cp38-abi3-manylinux_2_21_x86_64
  cp38-abi3-manylinux_2_20_x86_64
  cp38-abi3-manylinux_2_19_x86_64
  cp38-abi3-manylinux_2_18_x86_64
  cp38-abi3-manylinux_2_17_x86_64
  cp38-abi3-manylinux2014_x86_64
  cp38-abi3-manylinux_2_16_x86_64
  cp38-abi3-manylinux_2_15_x86_64
  cp38-abi3-manylinux_2_14_x86_64
  cp38-abi3-manylinux_2_13_x86_64
  cp38-abi3-manylinux_2_12_x86_64
  ...

pypi官网:https://pypi.org/ 。搜索找到需要的库选择合适版本的whl文件下载安装即可。

pip install xxxx.whl

在这里插入图片描述

源码编译安装

pypi官网:https://pypi.org/ 。正常情况下用pip安装最方便,如果是没网络的环境使用whl文件,或者conda pack安装。使用源码编译安装python库个人感觉只会出现在由于外部环境缺少相关库导致pip安装失败,需要进一步确定问题发生的情况,比如mpi4py需要安装mpi,如果系统没有装mpi,则会导致mpipy4安装失败。

python setup.py build
python setup.py install

在这里插入图片描述

ChatGPT:
通过源码安装 Python 库有以下几个优势:

  1. 更高的可定制性
    源码安装允许你对库进行定制和修改,以满足特定需求。例如,你可以修改库的代码,添加或修改功能,或者优化性能。

  2. 兼容性和依赖管理
    通过源码安装,你可以确保库与特定版本的依赖项兼容。这在处理某些需要特定版本的依赖项或解决依赖冲突时非常有用。

  3. 深入了解库的实现
    通过查看和编译库的源码,你可以更好地理解库的内部实现,这有助于调试和优化你的应用程序。

  4. 最新版本或修复
    有时,库的最新版本或修复可能还没有发布到 PyPI。通过源码安装,你可以直接从库的代码仓库获取最新的代码和功能。

  5. 无二进制依赖
    某些 Python 库包含需要编译的 C/C++ 代码。通过源码安装,你可以确保这些库在你的系统上正确编译和工作,避免了二进制分发中可能存在的兼容性问题。

  6. 安全性和透明性
    通过查看源码并编译安装库,你可以确保没有包含任何恶意代码或安全漏洞。这在处理敏感项目或需要高安全性的环境中特别重要。

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

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

相关文章

92.网络游戏逆向分析与漏洞攻防-游戏技能系统分析-利用哈希表实现快速读取文本内容

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果,代码看不懂是正常的,只要会抄就行,抄着抄着就能懂了 内容…

k8s dashboard安装

本案例,k8s版本为v1.22.17,所以安装v2.7.0版本的dashboard 1、下载dashboard的yaml文件 curl -O https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml 2、修改recommended.yaml文件 修改定义的Service&…

java版本spring cloud-spring boot高效知识付费SaaS平台的架构与功能模块设计

知识付费平台是一种快速发展的在线教育模式,它以满足用户需求为核心,提供便捷高效的学习渠道。该平台汇聚了各类专业知识,覆盖职业技能、生活兴趣和人文社科等多个领域,满足不同用户的学习需求。同时,平台还提供视频播…

通过 PW6606 快充电压诱骗芯片,了解 USB-A 与 USB-C 快充协议

充电器一般分两种: 1, A 口充电器,就是我们常见的 USB 口,如下图,这种通用快充协议叫: QC3.0,QC2.0 快充,是属于快充刚开始的充电协议,支持 5V,9V,12V 和 20V 电压输出充电器&#x…

聚观早报 | 拼多多第一季度营收;苹果2024款彩虹表带上市

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 5月24日消息 拼多多第一季度营收 苹果2024款彩虹表带上市 小米汽车智驾将提速 iPhone 16 Pro Max将用最大屏幕 …

20240520解决在Ubuntu20.04下编译RK3588的Android12的SDK出现C2_GIT_BUILD_VERSION未定义的问题

20240520解决在Ubuntu20.04下编译RK3588的Android12的SDK出现C2_GIT_BUILD_VERSION未定义的问题 2024/5/20 20:19 缘起:通过./repo/repo/repo sync -l得到的SDK正常,但是解压缩之后的SDK却出错了! 通过grep很容易发现有三个地方有&#xff0c…

Jenkins 构建 Maven 项目:项目和服务器在一起的情况

bash.sh内容 #!/bin/bash#删除历史数据 rm -rf ruoyi-admin.jar# appname$1 appnamevideo.xxxxx.com #获取传入的参数 echo "arg:$appname"#获取正在运行的jar包pid # pidps -ef | grep $1 | grep java -jar | awk {printf $2} pidps -ef | grep $appname | grep ja…

【加密与解密(第四版)】第十三章笔记

第十三章 HOOK技术 13.1 Hook概述 IAT HOOK(改地址) BOOL IAT_InstallHook(){BOOL bResult FALSE ;HMODULE hCurExe GetModuleHandle(NULL);PULONG_PTR pt ;ULONG_PTR OrginalAddr;bResult InstallModuleIATHook(hCurExe,"user32.dll",&qu…

将联表查询到的数据按1000一批次存入数据库-模板

idea模板: /*** ${Shitilei}信息 服务层实现。** author admin*/ Service RequiredArgsConstructor public class Operate${Shitilei}Service {private final ${Shitilei}Mapper ${shitilei}Mapper;private final RegionUtil util;/*** ${shitilei}表* return 操作结…

解决Ubuntu无法使用root登录的问题

1、登录普通用户 2、使用vi编辑器打开/etc/pam.d/gdm-autologin并注释掉auth required pam_succeed_if.so user ! root quiet_success 3、使用vi编辑器打开/etc/pam.d/gdm-password并注释掉auth required pam_succeed_if.so user ! root quiet_success 4、注销用户重新用roo…

【网络协议】【OSI】一次HTTP请求OSI工作过程详细解析

目录 1. 一次HTTP请求OSI工作过程 1.1 应用层(第7层) 1.2 表示层(第6层) 1.3 会话层(第5层) 1.4 传输层(第4层) 1.5 网络层(第3层) 1.6 数据链路层&am…

Z缓冲技术在AI去衣中的关键角色

引言: 人工智能(AI)技术的飞速发展,为图像处理领域带来了革命性的变化。其中,AI去衣技术作为一种新兴的应用,引起了广泛关注。它不仅在多媒体内容的编辑、虚拟现实和增强现实等领域具有重要的应用价值&…

Java八大类型详解

整数类型 (4种) 整数的类型 类型占用内存空间范围byte [字节]1字节-128 ~ 127存放的范围是>二进制short [短整型]2字节 -(2⁵) ~ 2⁵-1 -32768 ~ 32767 int [整形]4字节 -2 ~ 2-1 -2147483648 - 2147483647 long [长整形]8字节-2⁶ ~ 2⁶-1 整数类型的使用细节 1. Java个…

el-table 划入划出方法

<template><div><el-table :data"tableData" style"width: 100%" cell-mouse-enter"handleMouseEnter" cell-mouse-leave"handleMouseLeave"><el-table-column prop"ddd" label"日期2" widt…

Java 数组的基本使用

目录 含义语法格式语句特点数组的长度数组的元素打印数组显示数组数组的复制扩展示例【12】&#xff1a; 含义 数组&#xff08;array&#xff09;是一种最简单的复合数据类型&#xff0c;它是有序数据的集合&#xff0c;数组中的每个元素具有相同的数据类型&#xff0c;可以用…

Mysql基础教程(06):NOT IN

数据准备 首先创建一个数据库educational_manage&#xff0c;记住字符集和排序规则如下选择&#xff1a; 接着创建表和数据&#xff0c;具体的sql代码如下&#xff1a; SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------------------------- -- Table structure f…

JavaScript-隐式转换和显式转换

为什么需要类型转换&#xff1f; 因为JavaScript是弱类型声明&#xff0c;在没赋值前是不知道数据的类型的&#xff0c;只有赋值了才知道&#xff0c;表单和prompt获取的数据都是字符串型&#xff0c;此时就不能直接的简单加减法运算 所以需要转换数据类型 隐式转换 某些运算符…

Xcode=> 安装 simulator

XCode xcode中下载 simulator 点击加号➕&#xff0c;选择对应的版本&#xff0c;即可下载 下载完成&#xff1a; 其他下载办法 因为使用上述下载&#xff0c;会经常性的出现断开&#xff0c;再次下载又是从头开始&#xff0c;太费时费力。下面使用下载地址&#xff0c;然后用…

仓库管理WMS软件(Warehouse Management Software)百科解析

一、什么是仓库管理软件&#xff08;WMS&#xff09;&#xff1f; 仓库管理软件&#xff08;WMS&#xff09;全称Warehouse Management System&#xff0c;是一种专门用于仓库作业流程优化和库存控制的软件系统。它通过先进的自动识别与数据采集技术&#xff0c;实现对仓库货物…

人工智能(Educoder)-- 机器学习 -- 神经网络(初级)

第一关 注&#xff1a; 神经网络的起源和应用 起源&#xff1a;神经网络最早由心理学家和神经学家开创&#xff0c;目的是模拟生物神经系统对真实世界物体的交互反应。应用&#xff1a;现代神经网络用于分类&#xff08;如图像识别、文本分类&#xff09;和数值预测&#xff08…