在virtualenv环境中导入PyQt5
问题描述
Windows10(64位)环境,Python 3.5.2,已经使用默认路径安装了PyQt5,但是使用virtualenv无法创建PyQt5的环境。命令如下:
virtualenv --system-site-packages pyqt
运行后总是提示:
This application failed to start because it could not find or load the Qt platform plugin "windows"
产生原因
由于 PyQt5 安装在主环境中,在虚拟环境中没有 PyQt5 的动态链接库,PyQt5的环境变量也没有设置,因此无法导入,因此无法简单的用命令在 virtualenv 中安装 PyQt5。
解决办法
我们需要手动将 PyQt5 的包拷贝到 virtualenv 中,同时设置正确的plugin目录。在已安装 PyQt5 的系统中搜索,我们可得到 PyQt5 包的位置,在我的电脑上为:
C:\Users\User\AppData\Local\Programs\Python\Python35\Lib\site-packages\PyQt5
我想要创建的虚拟目录site-packages地址为:
D:\virtualenv\pyqt5\Lib\site-packages
将上面的PyQt5目录整个拷贝到下面的目录中。然后在Python程序的最开始增加以下的代码:
import os;
from distutils.sysconfig import get_python_lib
os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = os.path.join(get_python_lib(), 'PyQt5', 'plugins', 'platforms')
就可以在virtualenv环境中运行PyQt5的应用程序了。