我怎样才能不使用主机环境的站点包文件夹使用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:
- 浏览http://sourceforge.net/projects/pywin32/files/获取你想要的exe文件的URL
- 激活你的virtualenv
- 运行
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
在这种情况下:
- 下载exe自己
- 激活你的virtualenv
- 运行
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以下环境:
- Windows 7的
- 混帐
- Python 2.7.10与virtualenv
- VS2008。 它也可能工作(但我还没有testing)与http://www.microsoft.com/en-us/download/details.aspx?id=44266
编辑:现在划痕,似乎是安装仍然有一些问题…
我对整个情况感到厌倦,只是创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时访问被拒绝) – 只有在删除临时目录(可以手动删除)时才能清除。 最简单的方法是卸载并重新安装,而不是升级,然后手动删除临时文件夹。