我怎样才能不使用主机环境的站点包文件夹使用pywin32与virtualenv?

我正在Python 2.6下使用PyInstaller ,由于MS已经使用了他们的清单nonense,现在影响Python,因为它现在是MSVC8编译,所以这只是部分支持。

问题是清单embedded支持依赖pywin32扩展为了构build这是一个痛苦,因为没有包括主机的site-packages文件夹,当我创buildvirtualenv (有点在构build环境中击败点)我找不到方法安装所需的扩展,以便PyInstaller可以访问它们。

有没有人find解决这个问题?

我发现http://old.nabble.com/Windows:-virtualenv-and-pywin32–td27658201.html (现在是一个死链接)提供了以下解决scheme:

  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

我宁愿希望尝试“点安装”,而不是“easy_install”,但这并没有工作,并可能永远不会(引文需要)。


最后,我发现,但没有在http://www.mail-archive.com/python-list@python.org/msg272040.htmltesting一个解决scheme,它是:;

通过将pywin32.pth文件复制到我的virtualenv站点包中并编辑文件以指向path来解决此问题。

如果其他选项不适合你,也许这会呢?

对于Python 2.7或3.x使用pypiwin32

pip install pypiwin32

好吧,既然我必须find一条前进的道路,我即兴而已。 我已经在内部创build了一个带有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 

testing以下环境:

编辑:现在划痕,似乎是安装仍然有一些问题…

我对整个情况感到厌倦,只是创build了一组转换的轮子(“wheel convert <.exe>”)。 我会尽量让它们保持最新版本,但如果有任何问题,请大声呼喊。

https://tr00st.co.uk/python/wheel/pywin32/

使用pip可以轻松完成安装,并指向与您的版本和体系结构相匹配的软件包。 例如,对于Python 3.5 / amd64:

pip安装https://tr00st.co.uk/python/wheel/pywin32/pywin32-219-cp35-none-win_amd64.whl

警告: – 升级过程目前失败,因为卸载程序无法自行清理(清除win32api.pyd时访问被拒绝) – 只有在删除临时目录(可以手动删除)时才能清除。 最简单的方法是卸载并重新安装,而不是升级,然后手动删除临时文件夹。