<p>我可能遗漏了一些重要的东西,否则(几乎)问题中的每个陈述/假设似乎都不正确:</p>
<ol>
<li><strong>可以使用<em>pip</em>安装/升级<a href="https://github.com/mhammond/pywin32" rel="nofollow noreferrer">[GitHub]: mhammond/pywin32 - Python for Windows (pywin32) Extensions</a></li>
<li><a href="https://github.com" rel="nofollow noreferrer">GitHub</a>用于托管<strong>源代码</strong>(主要)。那里的资产是markhammond的<em>Win</em>安装程序(因为<em>pywin32</em>早在<em>pip</em>诞生之前就托管在<a href="https://sourceforge.net" rel="nofollow noreferrer">SourceForge</a>上),我想它们只是为了向后兼容而构建的</li>
<li><em>pip不下载pywin32二进制文件,而是从<a href="https://pypi.python.org/simple/pywin32" rel="nofollow noreferrer">[PyPI]: Links for pywin32</a>下载wheel</em>包</li>
</ol>
<p>为了演示以上所有内容,我创建了一个<em>VirtualEnv</em>,并在此基础上执行了一系列步骤:</p>
<ul>
<li><em>python</em>和<em>pip</em>可执行文件位置/版本</li>
<li><em>pip</em>测试(使用<em>pip</em>列出<em>pywin32</em>版本)-无输出(没有安装pywin32</em>)</li>
<li><em>pywin32下载和URL显示</li>
<li><em>pywin32</em>安装(稍后测试升级的旧版本)</li>
<li><em>pip</em>测试</li>
<li><em>pywin32</em>测试(使用<em>pywin32</em>列出pywin32</em>版本)</li>
<li><em>pywin32</em>升级</li>
<li><em>pip</em>测试</li>
<li><em>pywin32</em>测试</li>
</ul>
<p><strong>输出</strong>:</p>
<blockquote>
<pre class="lang-bat prettyprint-override"><code>(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
</code></pre>
</blockquote>