如何在虚拟环境中安装win32com模块?
我在我的Windows 7 64位笔记本上安装了virtualenv
和pywin32
这两个工具,它们各自都能正常工作,但一起用就不行。
具体来说,当我激活一个虚拟环境(virtualenv)时,在Python的交互式命令行中运行import win32com.client
会出错,提示No module named win32com.client
。但是如果没有激活虚拟环境,这个命令就能成功执行。
当我尝试在激活虚拟环境的情况下用pip
安装pywin32
(我通常都是这样安装模块的)时,出现了错误:
Could not find any downloads that satisfy the requirement pywin32
No distributions at all found for pywin32
...尽管在下面的输出中,pywin32
是列出的模块之一:
pip search pywin32
所以,为了能够安装pywin32
,我不得不使用从SourceForge下载的*.exe安装程序来安装它。
有没有办法在虚拟环境中安装pywin32
呢?
3 个回答
首先,创建一个虚拟环境并激活它:
cd c:\Users\ernesto.luzon
virtualenv --no-site-packages py351env
py351env\Scripts\activate
接下来,你有两个选择:
从sourceforge网站下载pywin32: http://sourceforge.net/projects/pywin32/files/pywin32/
从一个非官方但非常有用的二进制文件网站下载pywin32: http://www.lfd.uci.edu/~gohlke/pythonlibs/#pywin32
确保你下载的版本与环境中安装的Python解释器匹配,否则你可能会遇到 ImportError: DLL加载失败:%1 不是有效的Win32应用程序 的错误。
如果你是从sourceforge下载的,可以用easy_install来安装:
(py351env) C:\Users\ernesto.luzon\Downloads>easy_install pywin32-220.win-amd64-py3.5.exe
如果你是从gohlke下载的,可以用pip来安装:
(py351env) C:\Users\ernesto.luzon\Downloads>pip install pywin32-220-cp35-none-win_amd64.whl
如果之后遇到 ImportError: DLL加载失败:找不到指定的模块 的错误,你需要进行以下额外步骤:
运行后安装脚本:
(py351env) C:\Users\ernesto.luzon>python py351env\Scripts\pywin32_postinstall.py -install
复制了 pythoncom35.dll 到 C:\Users\ernesto.luzon\py351env\pythoncom35.dll
复制了 pywintypes35.dll 到 C:\Users\ernesto.luzon\py351env\pywintypes35.dll
....
注意它复制了 'pythoncom35.dll' 和 'pywintypes35.dll' 文件的位置。你需要把这些文件移动到这个文件夹:
C:\Users\ernesto.luzon\py351env\Lib\site-packages\win32
试试这个:
- 直接下载
- 启用你的虚拟环境
pip install --no-index --find-links:/local/dir/ SomePackage
可以查看一下pip-installer.org上的第8条(抱歉没有永久链接)
更新 2016
现在在PyPI上有一个可以用pip安装的pywin32版本。它叫做pypiwin32
,这个包是通过一种叫做wheel
的格式来安装的。
https://pypi.python.org/pypi/pypiwin32
pip install pypiwin32
这个方法可以在虚拟环境(virtualenv)中使用,或者和tox等工具一起使用。
下面的内容是我之前的旧回答,现在已经过时了。
旧回答 - 已过时。现代版本的虚拟环境默认是不允许访问全局的包。这意味着现在默认情况下,你无法使用全局的包。 不幸的是(截至2014年7月),你不能在虚拟环境中用pip安装pywin32。(这是相关的错误报告) 如果你想在虚拟环境中运行pywin32,首先激活虚拟环境,然后使用easy_install和pywin32的安装程序exe文件。例如: easy_install "C:\Path\To\Downloads\pywin32-219.win32-py3.4.exe"