我正在使用Python 2.6 下的PyInstaller,由于 MS 用他们的清单废话创建的混乱现在影响 Python,因为它现在是 MSVC8 编译的,因此仅部分支持。
问题是清单嵌入支持依赖于pywin32扩展来构建,这很痛苦,因为在我创建virtualenv时不包括主机的 site-packages 文件夹(在构建环境中有点失败)我找不到方法安装所需的扩展,以便 PyInstaller 可以访问它们。
有没有人找到解决这个问题的方法?
我正在使用Python 2.6 下的PyInstaller,由于 MS 用他们的清单废话创建的混乱现在影响 Python,因为它现在是 MSVC8 编译的,因此仅部分支持。
问题是清单嵌入支持依赖于pywin32扩展来构建,这很痛苦,因为在我创建virtualenv时不包括主机的 site-packages 文件夹(在构建环境中有点失败)我找不到方法安装所需的扩展,以便 PyInstaller 可以访问它们。
有没有人找到解决这个问题的方法?
我找到了http://old.nabble.com/Windows:-virtualenv-and-pywin32--td27658201.html(现在是死链接),它提供了以下解决方案:
easy_install http://PATH.TO/EXE/DOWNLOAD
这适用于现代版本的 setuptools(大约 2014 年 2 月,由 tovmeod 在评论中报告)。
如果您使用的是旧版本的 setuptools(或将其合并回 setuptools 分发),您可能会收到以下错误消息:
错误:c:\users\blah\appdata\local\temp\easy_install-ibkzv7\pywin32-214.win32-py2.6.exe 不是有效的 distutils Windows .exe
在这种情况下:
easy_install DOWNLOADED_FILE.exe
我宁愿尝试“pip install”而不是“easy_install”,但这不起作用,而且可能永远不会(需要引用)。
最后,我在http://www.mail-archive.com/python-list@python.org/msg272040.html找到了解决方案,但尚未测试:
通过将 pywin32.pth 文件复制到我的 virtualenv 站点包并编辑文件以指向路径来解决此问题。
如果其他选项对您不起作用,也许这会?
对于 Python 2.7 或 3.x,请使用pypiwin32。
pip install pypiwin32
好吧,既然我必须找到前进的道路,我即兴创作。我在内部创建了一个带有 pywin32 破解版的 git 存储库,它将使用标准setup.py
脚本安装在 virtualenv 中。花了很多时间才能让它正常工作,但我设法让它加载,依赖代码现在可以按我的需要工作。如果人们觉得这对社区有好处,请发表评论:如果我得到足够的东西,我会尝试在我的 github 帐户上发布一些内容。
自从上一个答案以来,这可能已经有所改进,因为我已经在几台机器上的沙盒上成功安装了 pywin32,而没有任何特定的“黑客”:
$ virtualenv sandbox
$ sandbox\scripts\activate
(sandbox) $ git clone https://github.com/Travis-Sun/pywin32.git
(sandbox) $ cd pywin32
(sandbox) $ python setup.py install
经以下环境测试:
编辑:暂时从头开始,安装似乎仍然存在一些问题......
我已经厌倦了整个情况,并创建了一组转换后的轮子(“wheel convert <.exe>”)。我会尽量让它们在最新版本中得到维护,但如果有任何问题,请大声疾呼。
https://tr00st.co.uk/python/wheel/pywin32/
使用 pip 并指向与您的版本和架构匹配的包可以轻松完成安装。例如,对于 Python 3.5/amd64:
点安装https://tr00st.co.uk/python/wheel/pywin32/pywin32-219-cp35-none-win_amd64.whl
警告:--upgrade 过程当前失败,因为卸载过程无法自行清理(清理 win32api.pyd 时拒绝访问) - 这仅在删除临时目录时,可以手动删除。解决此问题的最简单方法是卸载并重新安装而不是升级,然后手动删除临时文件夹。