我正在使用Python 2.6下的PyInstaller,这只是部分支持,因为MS使用他们的清单nonense创建的混乱现在影响Python,因为它现在是MSVC8编译的。
问题是清单嵌入支持依赖于pywin32扩展来构建这是一种痛苦,因为在创建virtualenv时没有包含主机的site-packages文件夹(有点打败了指向构建环境)我找不到安装所需扩展的方法,因此PyInstaller可以访问它们。
有没有人找到解决这个问题的方法?
答案 0 :(得分:74)
我发现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 site-packages解决了这个问题 并编辑文件以指向路径。
如果其他选项对您不起作用,可能会这样吗?
答案 1 :(得分:12)
对于Python 2.7或3.x,请使用 pypiwin32 。
pip install pypiwin32
答案 2 :(得分:4)
setup.py
脚本安装在virtualenv中。它需要花费大量时间才能使其正常工作,但我设法让它加载,依赖代码现在可以正常工作。如果人们觉得这会对社区有益,请发表评论:如果我得到足够的话,我会尝试在我的github帐户上放一些东西。
答案 3 :(得分:0)
自从之前的回答以来,这可能已经有所改进,因为我已经在几台机器上的沙盒上成功安装了pywin32而没有任何特定的" hacks" :
$ virtualenv sandbox
$ sandbox\scripts\activate
(sandbox) $ git clone https://github.com/Travis-Sun/pywin32.git
(sandbox) $ cd pywin32
(sandbox) $ python setup.py install
使用以下环境进行测试:
答案 4 :(得分:0)
编辑:暂时解决这个问题,安装问题似乎仍然存在......
我对整个情况感到厌倦,只是创建了一组转换后的轮子("轮转换< .exe>")。我会尝试让它们保持最新版本,但如果有任何问题请大声说。
https://tr00st.co.uk/python/wheel/pywin32/
使用pip可以轻松完成安装,并指向与您的版本和体系结构相匹配的软件包。例如,对于Python 3.5 / amd64:
pip install https://tr00st.co.uk/python/wheel/pywin32/pywin32-219-cp35-none-win_amd64.whl
警告:-upgrade进程当前失败,因为卸载过程无法自行清理(清理win32api.pyd时拒绝访问) - 这只是在删除临时目录时,可以是手动删除。最简单的方法是卸载并重新安装而不是升级,然后手动删除临时文件夹。