当前位置:   article > 正文

python实现pip install最新的.whl文件_pip install whl

pip install whl

目录

一、bat实现使用pip install 安装最新的.whl文件【弃用】

二、python实现使用pip install 安装最新的1个或多个.whl文件

三、判断requirements.txt文件中的库是否都安装了


一、bat实现使用pip install 安装最新的.whl文件【弃用】

 我的应用场景

         因为电脑本地只能离线安装,在安装三方库的时候比较痛苦,需要先云桌面跳转到外网访问pypi网址下载三方库,然后存储到本地的F:\python\lib文件夹下,然后cmd下使用pip install执行安装,所以我想每次下载存储好文件后,点击.bat文件自动执行最新下载的.whl文件。

下面的脚本未实现我的功能,因为只取到日期,没有对时间进行对比。           

  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. :: 设置固定的目录路径
  4. set "dir_path=F:\python\lib"
  5. :: 查找指定目录下日期最新的.whl文件
  6. set "latest_file="
  7. set "latest_date="
  8. for /f "tokens=*" %%i in ('dir /b /a:-d "!dir_path!\\*.*"') do (
  9. set "file_name=%%i"
  10. if "!file_name:~-4!"==".whl" (
  11. set "file_date=%%~td"
  12. if "!file_date!" geq "!latest_date!" (
  13. set "latest_file=%%i"
  14. set "latest_date=!file_date!"
  15. )
  16. )
  17. )
  18. :: 检查是否找到了文件
  19. if not "!latest_file!"=="" (
  20. echo 找到最新的.whl文件: !latest_file!,该文件的日期是: !latest_date!
  21. pip install "!dir_path!\!latest_file!"
  22. ) else (
  23. echo 没有找到任何.whl文件
  24. )
  25. echo.
  26. endlocal
  27. pause

二、python实现使用pip install 安装最新的1个或多个.whl文件

最后还是用python来实现吧

下面的脚本可以自行修改安装最新的1个还是多个文件。

修改for file in sorted_files[:2]中的数字2位置调整执行的文件个数。

设置成1,则执行最新的那个文件的安装

设置成2,先执行最新的文件,再执行次新的文件,

依此类推

之所以这样,是因为库的离线安装过程中总是发现缺依赖,需要临时下载,最新的需要先安装

  1. # -*- coding: utf-8 -*-
  2. # @Author: GraceJiang
  3. # @Date: 2024/5/21
  4. # @Description:installThirdlib.py
  5. import os
  6. import datetime
  7. import subprocess
  8. # 设置目录路径
  9. directory = 'F:\\python\\lib'
  10. # 获取目录下所有.whl文件的列表
  11. whl_files = [f for f in os.listdir(directory) if f.endswith('.whl')]
  12. # 如果没有.whl文件,则退出
  13. if not whl_files:
  14. print("No .whl files found in the directory.")
  15. exit()
  16. # 根据文件的最后修改时间对文件列表进行排序
  17. sorted_files = sorted(whl_files, key=lambda x: os.path.getmtime(os.path.join(directory, x)), reverse=True)
  18. # 打印最新的10个文件的文件名和日期
  19. for file in sorted_files[:2]:
  20. file_path = os.path.join(directory, file)
  21. modification_time = os.path.getmtime(file_path)
  22. modification_datetime = datetime.datetime.fromtimestamp(modification_time)
  23. print(f"File: {file}, Date: {modification_datetime.strftime('%Y-%m-%d %H:%M:%S')}")
  24. # 尝试安装最新的.whl文件
  25. try:
  26. subprocess.check_call(['pip', 'install', os.path.join(directory, file)])
  27. print("Installation successful.\n")
  28. except subprocess.CalledProcessError as e:
  29. print(f"Installation failed with error: {e}")
  30. # # 找到最新的.whl文件
  31. # latest_file = max(whl_files, key=lambda x: os.path.getctime(os.path.join(directory, x)))
  32. #
  33. # # 打印最新的.whl文件信息
  34. # print(f"\nThe latest .whl file is: {latest_file}")
  35. # # 获取最新的.whl文件的最后修改时间
  36. # modification_time = os.path.getmtime(os.path.join(directory, latest_file))
  37. # # 将时间戳转换为datetime对象
  38. # modification_datetime = datetime.datetime.fromtimestamp(modification_time)
  39. #
  40. # # 打印最新的.whl文件信息和日期
  41. # print(f"File date: {modification_datetime.strftime('%Y-%m-%d %H:%M:%S')}\n")

 

三、判断requirements.txt文件中的库是否都安装了

  1. # -*- coding: utf-8 -*-
  2. # @Author: GraceJiang
  3. # @Date: 2024/5/21
  4. # @Description:get_current_libs_results.py
  5. import subprocess
  6. # 读取txt文件中的包名
  7. def read_package_names(filename):
  8. with open(filename, 'r') as file:
  9. lines = file.readlines()
  10. return [line.split('==')[0] for line in lines]
  11. # 使用pip list命令查找包
  12. def find_packages(names):
  13. # 执行pip list命令并捕获输出
  14. result = subprocess.run(['pip', 'list'], capture_output=True, text=True)
  15. if result.returncode == 0:
  16. # 解析输出结果
  17. output_lines = result.stdout.strip().split('\n')
  18. for name in names:
  19. found = False
  20. for line in output_lines:
  21. if line.startswith(name):
  22. found = True
  23. break
  24. if not found:
  25. print('未找到的name:', name)
  26. else:
  27. print("Error executing 'pip list' command.")
  28. if __name__ == '__main__':
  29. filename = 'requirements.txt' # 替换为你的txt文件名
  30. package_names = read_package_names(filename)
  31. find_packages(package_names)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/922275
推荐阅读
相关标签
  

闽ICP备14008679号