如何在不必包含主机环境的site-packages文件夹的情况下将pywin32与virtualenv一起使用?

jkp*_*jkp 52 python winapi virtualenv pyinstaller

我正在使用Python 2.6下的PyInstaller,这只是部分支持,因为MS使用他们的清单nonense创建了混乱,现在影响Python,因为它现在是MSVC8编译的.

问题是清单嵌入支持依赖于pywin32扩展来构建这是一个痛苦,因为我在创建virtualenv时没有包含主机的site-packages文件夹(有点打败构建环境中的点)我找不到方法安装所需的扩展,以便PyInstaller可以访问它们.

有没有人找到解决这个问题的方法?

dav*_*one 75

我找到了http://old.nabble.com/Windows:-virtualenv-and-pywin32--td27658201.html(现在是一个死链接),它提供了以下解决方案:

  1. 浏览http://sourceforge.net/projects/pywin32/files/以获取所需exe的URL
  2. 激活你的virtualenv
  3. 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

在这种情况下:

  1. 自己下载exe
  2. 激活你的virtualenv
  3. 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并编辑文件以指向路径来解决这个问题.

如果其他选项对你不起作用,也许会这样吗?

  • 具体来说,下载pywin32 .exe安装程序,然后在.exe文件上执行`easy_install -Z`.`-Z`可能没有必要,但我总是这样做. (2认同)

And*_*ete 13

对于Python 2.7或3.x,请使用pypiwin32.

pip install pypiwin32


jkp*_*jkp 4

好吧,既然我必须找到前进的道路,我就即兴发挥。我在内部创建了一个 git 存储库,其中包含 pywin32 的 hacked-together 版本,它将使用标准脚本安装在 virtualenv 中setup.py。我花了很多功夫才使其正常工作,但我设法加载它,并且依赖的代码现在可以按照我的需要工作。如果人们认为这对社区有益,请发表评论:如果我得到足够的信息,我会尝试在我的 github 帐户上发布一些内容。

  • 这是一个糟糕的、反社区的答案,拥有 33k+ 的声誉,你应该更了解。“已接受”的答案来自OP,他说:“没关系,所有提供帮助并通过谷歌来到这里的人,我已经修复了它,但我太忙了,无法向您展示如何修复。” 我并不讨厌,因为我曾经经历过。我之所以要大声疾呼,是因为我希望有人能有礼貌地大声疾呼。 (6认同)