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

csdn推荐

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

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官网: 。搜索找到需要的库选择合适版本的whl文件下载安装即可。

pip install xxxx.whl

源码编译安装

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

python setup.py build
python setup.py install

ChatGPT:

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

更高的可定制性

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

兼容性和依赖管理

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

深入了解库的实现

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

最新版本或修复

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

无二进制依赖

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

安全性和透明性

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

文章来源:https://blog.csdn.net/weixin_43912621/article/details/139162298



微信扫描下方的二维码阅读本文

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容