- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
据我所知,不能使用 pip 安装/升级 pywin32
,尽管 pip install -U pypiwin32
是一种解决方法。
pywin32
现在托管在 GitHub 上.我对 git
知之甚少,但知道它适用于二进制文件。有没有办法以编程方式升级 pywin32
二进制文件?也就是说,假设 pywin32
v221 安装了 Python v.3.6(64 位),该程序应检查 GitHub 上的最新版本 (v223) 并下载 pywin32-223.win-amd64- py3.6.exe
并安装它。到目前为止,我只能想到一个类似于网络抓取的脚本,将安装的版本与网络上的最新版本进行比较,并采取相应的行动。我想知道是否有一个简单的解决方案。
最佳答案
我可能遗漏了一些重要的东西,否则(几乎)问题中的每个陈述/假设似乎都不正确:
可以使用 PIP
安装/升级 [GitHub]: mhammond/pywin32 - Python for Windows (pywin32) ExtensionsGitHub 用于托管源代码(主要)。那里的 Assets 是 Mark Hammond 的 Win 安装程序(因为 PyWin32 托管在 SourceForge - 早在 PIP 诞生之前),我想它们只是构建的为了向后兼容
PIP 不下载 PyWin32 二进制文件,而是从 [PyPI]: Links for pywin32 下载 .wheel 包
为了演示以上所有内容,我创建了一个VirtualEnv,并在此基础上进行了一系列步骤:
Python 和 PIP 可执行文件位置/版本
PIP 测试(使用 PIP 列出 PyWin32 版本)- 无输出(未安装 PyWin32 )
PyWin32 下载和URL 显示
PyWin32 安装(较旧的版本稍后测试升级)
PIP 测试
PyWin32 测试(列出使用 PyWin32 的 PyWin32 版本)
PyWin32 升级
PIP 测试
PyWin32 测试
输出:
(py36x64_test) e:\Work\Dev\StackOverflow\q049398198> sopr.bat
### Set shorter prompt to better fit when pasted in StackOverflow (or other) pages ###
[prompt]> where python pip
c:\Work\Dev\VEnvs\py36x64_test\Scripts\python.exe
c:\Work\Dev\VEnvs\py36x64_test\Scripts\pip.exe
[prompt]> 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)]
[prompt]> pip -V
pip 9.0.3 from c:\work\dev\venvs\py36x64_test\lib\site-packages (python 3.6)
[prompt]> :: PIP test
[prompt]> pip list 2>nul | findstr pywin32
[prompt]> 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
[prompt]> 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
[prompt]> :: PIP test
[prompt]> pip list 2>nul | findstr pywin32
pywin32 (222)
[prompt]> :: PyWin32 test
[prompt]> python -c "import win32api as wapi;print(wapi.GetFileVersionInfo(wapi.__file__, \"\\\\\")[\"FileVersionLS\"] >> 16)"
222
[prompt]> 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
[prompt]> :: PIP test
[prompt]> pip list 2>nul | findstr pywin32
pywin32 (223)
[prompt]> :: PyWin32 test
[prompt]> python -c "import win32api as wapi;print(wapi.GetFileVersionInfo(wapi.__file__, \"\\\\\")[\"FileVersionLS\"] >> 16)"
223
使用 PIP 查看 [SO]: How to install a package for a specific Python version on Windows 10? (@CristiFati's answer) 以获取更多详细信息。
关于python - 如何自动更新pywin32?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49398198/
我正在尝试检查 PyWin 在 Excel 的 COM 接口(interface)中返回的数据是否属于“时间”类型。 这是不起作用的代码: from win32com.client import Di
我在 Win32 上使用 Python 与 OneNote 的 COM 互操作进行交互。 下面是提取笔记本层次结构的最基本代码: import win32com.client onObj = win3
我是一名优秀的程序员,十分优秀!