python散装笔记——81: PyPI 软件包管理器: pip 模块的使用

liftword1周前 (03-06)技术文章4

有时,您可能需要在 python 中使用 pip 包管理器,例如,当某些导入可能引发 ImportError 时,您需要处理异常。如果在 Windows 上解压缩,
Python_root/Scripts/pip.exe
内会存储 __main___.py 文件,其中导入了来自 pip 包的主类。这意味着只要使用 pip 可执行文件,就会使用 pip 软件包。有关 pip 作为可执行文件的用法,请参阅: pip: PyPI 软件包管理器

1: 命令使用示例

import pip

command = 'install'
parameter = 'selenium'
second_param = 'numpy' # You can give as many package names as needed
switch = '--upgrade'

pip.main([command, parameter, second_param, switch])

只有需要的参数才是必须的,因此 pip.main(['freeze'])pip.main(['freeze', '', '']) 都可以接受。

批量安装

可以在一次调用中传递多个软件包名称,但如果其中一个安装/升级失败,整个安装过程就会停止,并以状态 1 结束。

import pip

installed = pip.get_installed_distributions()
list = []
for i in installed:
  list.append(i.key)

pip.main(['install']+list+['--upgrade'])

如果不想在某些安装失败时停止,可在循环中调用安装。

for i in installed:
  pip.main(['install']+i.key+['--upgrade'])

2: 处理 ImportError 异常

将 python 文件作为模块使用时,无需总是检查软件包是否已安装,但它对脚本仍然有用。

if __name__ == '__main__':
  try:
    import requests
  except ImportError:
    print("To use this module you need 'requests' module")
    t = input('Install requests? y/n: ')
    if t == 'y':
      import pip
      pip.main(['install', 'requests'])
      import requests
      import os
      import sys
      pass
    else:
      import os
      import sys
      print('Some functionality can be unavailable.')
else:
  import requests
  import os
  import sys

3: 强制安装

许多软件包,例如 3.4 版本的软件包,可以在 3.6 上正常运行,但如果没有特定平台的发行版,就无法安装,但有变通办法。在 .whl 文件(称为轮子)中,命名规则决定了能否在指定平台上安装软件包。例如

scikit_learn-0.18.1-cp36-cp36m-win_amd64.whl

[package_name]-[version]-[python interpreter]-[pythoninterpreter]-[Operating System].whl

如果更改了轮子文件的名称,因此平台匹配,即使平台或 python 版本不匹配,pip 也会尝试安装软件包。从名称中移除平台或解释器会在最新版本的 pip 模块中引发错误 kjhfkjdf.whl is not a valid wheel filename...

也可以使用 7-zip 等压缩工具解压 .whl 文件。- 它通常包含发行版元文件夹和源文件文件夹。这些源文件可以简单地解压到 site-packages 目录中,除非此wheel文件包含安装脚本,否则必须先运行安装脚本。

相关文章

在 Python 中解压元组、列表和其他序列

Python 对解包序列的支持非常有用。拆包,也称为“多重赋值”或“迭代拆包”,是指在单个步骤中将序列中的值分配给多个变量的过程。此功能适用于元组、列表和其他可迭代序列。什么是可迭代拆包?考虑这个元组...

pyinstaller打包python程序高级技巧

pyinstaller是最常用的python程序打包成可执行程序(exe)的工具,这篇文章将介绍几个pyinstaller打包可能遇到的问题及其解决方法。安装pyinstaller的安装很简单,直接p...

Python exe 文件反编译为 Python 脚本

前言将 Python 可执行文件(.exe)反编译为 Python 脚本是一项有趣的技术挑战,可以帮助我们理解程序的工作原理,以及可能包含的逻辑和算法。虽然反编译不是一项简单的任务,并且对于使用各种保...

必知必会!10个Python超实用技巧

技巧一:快速赋值与解包在 Python 中,通过列表给多个变量赋值是一项非常实用的技巧。假设我们有一个包含三个元素的列表[1, 2, 3],想要将这三个元素分别赋值给三个变量a、b、c,只需简单地写成...

使用 Python 让旧照片修复清晰

翻开家里的的相片册,可以看到每张照片都是那么的弥足珍贵,特别是很久以前的照片,都是美好的回忆,还有那些年错过的场景,都被记录下来了,不过可惜的是,随着时间的流逝,照片可能泛黄,出现划痕,画质损失等等,...