如何自动更新pywin32?

2024-10-01 04:54:12 发布

您现在位置:Python中文网/ 问答频道 /正文

据我所知,不能使用pip安装/升级pywin32,尽管pip install -U pypiwin32是一种解决办法。在

pywin32现在托管在GitHub上。我对git知之甚少,但知道它可以处理二进制文件。有没有办法以编程方式升级pywin32二进制文件?也就是说,假设pywin32v221是用pythonv.3.6(64位)安装的,程序应该检查GitHub上最新的(v223),并下载pywin32-223.win-amd64-py3.6.exe并安装它。到目前为止,我只能想到一个类似web抓取的脚本,它将安装的版本与web上的最新版本进行比较,并相应地采取相应的措施。我想知道是否有一个简单的解决办法。在


Tags: installpip文件git版本githubweb编程
2条回答

我可能遗漏了一些重要的东西,否则(几乎)问题中的每个陈述/假设似乎都不正确:

  1. 可以使用pip安装/升级[GitHub]: mhammond/pywin32 - Python for Windows (pywin32) Extensions
  2. GitHub用于托管源代码(主要)。那里的资产是markhammond的Win安装程序(因为pywin32早在pip诞生之前就托管在SourceForge上),我想它们只是为了向后兼容而构建的
  3. pip不下载pywin32二进制文件,而是从[PyPI]: Links for pywin32下载wheel

为了演示以上所有内容,我创建了一个VirtualEnv,并在此基础上执行了一系列步骤:

  • pythonpip可执行文件位置/版本
  • pip测试(使用pip列出pywin32版本)-无输出(没有安装pywin32)
  • pywin32下载和URL显示
  • pywin32安装(稍后测试升级的旧版本)
  • pip测试
  • pywin32测试(使用pywin32列出pywin32版本)
  • pywin32升级
  • pip测试
  • pywin32测试

输出

(py36x64_test) e:\Work\Dev\StackOverflow\q049398198>where python pip
c:\Work\Dev\VEnvs\py36x64_test\Scripts\python.exe
c:\Work\Dev\VEnvs\py36x64_test\Scripts\pip.exe

(py36x64_test) e:\Work\Dev\StackOverflow\q049398198>python -c "import sys;print(sys.version)"
3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)]

(py36x64_test) e:\Work\Dev\StackOverflow\q049398198>pip -V
pip 9.0.3 from c:\work\dev\venvs\py36x64_test\lib\site-packages (python 3.6)

(py36x64_test) e:\Work\Dev\StackOverflow\q049398198>rem pip test

(py36x64_test) e:\Work\Dev\StackOverflow\q049398198>pip list 2>nul | findstr pywin32

(py36x64_test) e:\Work\Dev\StackOverflow\q049398198>pip download -vvv pywin32 2>nul | findstr /i download
  Downloading pywin32-223-cp36-cp36m-win_amd64.whl (9.0MB)
  Downloading from URL https://pypi.python.org/packages/9f/9d/f4b2170e8ff5d825cd4398856fee88f6c70c60bce0aa8411ed17c1e1b21f/pywin32-223-cp36-cp36m-win_amd64.whl#md5=2d211288ee000b6ec5d37436bcbe8a43 (from https://pypi.python.org/simple/pywin32/)
Successfully downloaded pywin32

(py36x64_test) e:\Work\Dev\StackOverflow\q049398198>pip install https://pypi.python.org/packages/be/25/0e0c568456b77ce144dd2b8799f915b046ffa1cd922771d214e4be05bca2/pywin32-222-cp36-cp36m-win_amd64.whl#md5=94a9a3782081e14973c5ae448957d530 2>nul
Collecting pywin32==222 from https://pypi.python.org/packages/be/25/0e0c568456b77ce144dd2b8799f915b046ffa1cd922771d214e4be05bca2/pywin32-222-cp36-cp36m-win_amd64.whl#md5=94a9a3782081e14973c5ae448957d530
  Downloading pywin32-222-cp36-cp36m-win_amd64.whl (9.0MB)
    100% |################################| 9.0MB 135kB/s
Installing collected packages: pywin32
Successfully installed pywin32-222

(py36x64_test) e:\Work\Dev\StackOverflow\q049398198>rem pip test

(py36x64_test) e:\Work\Dev\StackOverflow\q049398198>pip list 2>nul | findstr pywin32
pywin32 (222)

(py36x64_test) e:\Work\Dev\StackOverflow\q049398198>rem pywin32 test

(py36x64_test) e:\Work\Dev\StackOverflow\q049398198>python -c "import win32api as wapi;print(wapi.GetFileVersionInfo(wapi.__file__, \"\\\\\")[\"FileVersionLS\"] >> 16)"
222

(py36x64_test) e:\Work\Dev\StackOverflow\q049398198>pip install -U pywin32 2>nul
Collecting pywin32
  Using cached pywin32-223-cp36-cp36m-win_amd64.whl
Installing collected packages: pywin32
  Found existing installation: pywin32 222
    Uninstalling pywin32-222:
      Successfully uninstalled pywin32-222

(py36x64_test) e:\Work\Dev\StackOverflow\q049398198>rem pip test

(py36x64_test) e:\Work\Dev\StackOverflow\q049398198>pip list 2>nul | findstr pywin32
pywin32 (223)

(py36x64_test) e:\Work\Dev\StackOverflow\q049398198>rem pywin32 test

(py36x64_test) e:\Work\Dev\StackOverflow\q049398198>python -c "import win32api as wapi;print(wapi.GetFileVersionInfo(wapi.__file__, \"\\\\\")[\"FileVersionLS\"] >> 16)"
223

您可以使用Chocolatey及其{a2},但它已过时。在

因此,one described in this article这样的脚本解决方案是可能的(对于其他程序,但是有类似的想法)。另请参见this gist
如果您在任何地方解压缩latest Git for Windows,并使用simplified ^{},您将可以访问200多个Linux命令,包括awkhead,等等

相关问题 更多 >