是否有可能加PyQt4/PySide包在虚拟环境的沙盒?
-
21-09-2019 - |
题
我在使用 虚拟环境 利润我发展的环境 web.py
, simplejson
和其他网面向软件包。
我要开发一个简单的蟒蛇客户使用夸脱至重复使用的一些Api发展web.py.
有没有人在这里已经成功地安装PyQt4与虚拟环境下?
这可能吗?
我下载了所有的二进制文件和有 PyQt4
安装全球在我python2.6录。
如果我不用 --no-site--packages
选项,虚拟环境包括正确 PyQt4
在我的新的沙盒但是,很显然,所有全局软件包,我不需要。
是否有一个清洁的方式来准备一个新的沙盒带 --no-site--packages
选项,然后添加 PyQt4
或 PySide
使用 pip
, easy_install
或其他一些魔法把戏吗?
解决方案
这应该足以建立一个空虚拟环境和随后复制的内容 .../site-packages/PyQt4
目录入它。
我建议要安装PyQt4一旦在全球范围内,作一个目录副本,卸载它,然后使用这种伎俩创造VEs。
其他提示
我有同样的问题。我用virtualenvwrapper来,所以我写了这剧本创建一个链接到PyQt在每一个新的虚拟环境。也许是有用的其他人:
#!/bin/bash
# This hook is run after a new virtualenv is activated.
# ~/.virtualenvs/postmkvirtualenv
LIBS=( PyQt4 sip.so )
PYTHON_VERSION=python$(python -c "import sys; print (str(sys.version_info[0])+'.'+str(sys.version_info[1]))")
VAR=( $(which -a $PYTHON_VERSION) )
GET_PYTHON_LIB_CMD="from distutils.sysconfig import get_python_lib; print (get_python_lib())"
LIB_VIRTUALENV_PATH=$(python -c "$GET_PYTHON_LIB_CMD")
LIB_SYSTEM_PATH=$(${VAR[-1]} -c "$GET_PYTHON_LIB_CMD")
for LIB in ${LIBS[@]}
do
ln -s $LIB_SYSTEM_PATH/$LIB $LIB_VIRTUALENV_PATH/$LIB
done
Debian Linux,python2.7:
- 安装python qt4全球:
sudo apt-get install python-qt4
- 创建符号链接的PyQt4到你的虚拟env
ln -s /usr/lib/python2.7/dist-packages/PyQt4/ ~/.virtualenvs/myEnv/lib/python2.7/site-packages/
- 创建象征性的链接口。所以你的虚拟env
ln -s /usr/lib/python2.7/dist-packages/sip.so ~/.virtualenvs/myEnv/lib/python2.7/site-packages/
对于那些想要使用PyQt4在Python3虚拟环境(在OS x)第一次安装PyQt4和SIP(我会用自制)
$ brew install python3
$ brew install sip --with-python3
$ brew install pyqt --with-python3
然后创建虚拟环境
$ virtualenv ...
最后symlink(更改的版本SIP,PyQt4和Python对于那些在计算机上安装)
$ ln -s /usr/local/Cellar/sip/4.15.5/lib/python3.4/site-packages/*.* ~/{VIRTUALENVHOME}/{VIRTUALENVNAME}/lib/python3.4/site-packages/
$ ln -s /usr/local/Cellar/pyqt/4.10.4/lib/python3.4/site-packages/PyQt4/*.* ~/{VIRTUALENVHOME}/{VIRTUALENVNAME}/lib/python3.4/site-packages/PyQt4
我问,如果这可以安装PySide从内在虚拟环境irc.freenode.net #pyside道,并得到了肯定回答 hugopl.所以我跟踪的指示 PySide二进制文件的Microsoft Windows 和它的工作。输出如下。
Z:\virtualenv\pyside>Scripts\activate.bat
(pyside) Z:\virtualenv\pyside>where python
Z:\virtualenv\pyside\Scripts\python.exe
(pyside) Z:\virtualenv\pyside>easy_install PySide
install_dir Z:\virtualenv\pyside\Lib\site-packages\
Searching for PySide
Reading http://pypi.python.org/simple/PySide/
Reading http://www.pyside.org
Reading http://www.pyside.org/files/pkg/
Best match: PySide 1.0.0beta1qt471
Downloading http://www.pyside.org/files/pkg/PySide-1.0.0beta1qt471.win32-py2.6.exe
Processing PySide-1.0.0beta1qt471.win32-py2.6.exe
Deleting c:\users\piotr\appdata\local\temp\easy_install-fvfa7e\PySide-1.0.0beta1qt471-py2.6-win32.egg.tmp\EGG-INFO\scripts\py
ide-uic-script.py
Deleting c:\users\piotr\appdata\local\temp\easy_install-fvfa7e\PySide-1.0.0beta1qt471-py2.6-win32.egg.tmp\EGG-INFO\scripts\py
ide-uic.exe
creating 'c:\users\piotr\appdata\local\temp\easy_install-fvfa7e\PySide-1.0.0beta1qt471-py2.6-win32.egg' and adding 'c:\users\
iotr\appdata\local\temp\easy_install-fvfa7e\PySide-1.0.0beta1qt471-py2.6-win32.egg.tmp' to it
creating z:\virtualenv\pyside\lib\site-packages\PySide-1.0.0beta1qt471-py2.6-win32.egg
Extracting PySide-1.0.0beta1qt471-py2.6-win32.egg to z:\virtualenv\pyside\lib\site-packages
Adding PySide 1.0.0beta1qt471 to easy-install.pth file
Installing pyside-uic-script.pyc script to Z:\virtualenv\pyside\Scripts
Installing pyside_postinstall.py script to Z:\virtualenv\pyside\Scripts
Installing pyside_postinstall.pyc script to Z:\virtualenv\pyside\Scripts
Installing pyside-uic-script.py script to Z:\virtualenv\pyside\Scripts
Installing pyside-uic.exe script to Z:\virtualenv\pyside\Scripts
Installed z:\virtualenv\pyside\lib\site-packages\pyside-1.0.0beta1qt471-py2.6-win32.egg
Processing dependencies for PySide
Finished processing dependencies for PySide
(pyside) Z:\virtualenv\pyside>python Scripts\pyside_postinstall.py -install
Generating file Z:\virtualenv\pyside\Scripts\qt.conf...
The PySide extensions were successfully installed.
让我们假设你的虚拟环境下被命名为myProject和你在使用virtualenvwrapper来.Unix平台,也是假定的。
$ workon myProject
$ pip install --no-install SIP
$ pip install --no-install PyQt
$ cd ~/.virtualenvs/myProject/build/SIP
$ python configure.py
$ make
$ make install
$ cd ~/.virtualenvs/myProject/build/PyQt
$ python configure.py
$ make
$ make install
$ cd && rm -rf ~/.virtualenvs/myProject/build # Optional.
最简单的方法是安装这个: vext.pyqt4
这将加入单一的系统 PyQt4
包你的虚拟环境下.
Ubuntu的16.04使用情况:
sudo apt install python3-pyqt4
mkvirtualenv --python=python3.5 venv
pip install --no-use-wheel vext.pyqt4
为PySide1.2.1和Ubuntu12.4
安装编译器,脱相关,蟒蛇来源
sudo apt-get install cmake qt4-qmake qt-sdk python-dev
创建虚拟环境与virtualenvwrapper
可以准备编制夸脱(-30分钟)
$ mkvirtualenv ve_name
(ve_name)$ pip install PySide
测试
$ python -c "from PyQt4 import QtCore; print QtCore.PYQT_VERSION_STR"
4.9.1
如果你安装pyqt通过酿上一个Mac(具体地说,我对小牛):
ln -s /usr/local/Cellar/sip/4.15.2/lib/python2.7/site-packages/*.* ~/{VIRTUALENVHOME}/{VIRTUALENVNAME}/lib/python2.7/site-packages
ln -s /usr/local/Cellar/pyqt/4.10.3/lib/python2.7/site-packages/PyQt4/ ~/{VIRTUALENVHOME}/{VIRTUALENVNAME}/lib/python2.7/site-packages/PyQt4
pip install pygments pyzmq
当然这些版本的文件夹中的数字可能会随着时间而改变。
什么工作对我来说是复制的 /PyQt4/
和 sip.x86_64-linux-gnu.so
从 /usr/lib/python2.7/dist-packages
要 <VIRTUALENV>/lib/python2.7/site-packages
和改变所有权的权限,这些复制的文件(由于副本人所拥有的根)。
扩大在亚伦Digulla的答案,使用缝得到的文件清单就可以非常方便。我通常做这样的事情(从msysGit壳):
# Create temp git repo for the pristine Python installation
$ cd /c/Python27
$ git init -q
$ git add .
$ git commit -qm "Initial commit"
然后运行安装,用于PyQt4(或者).在此之后,作一个压缩文件的安装增加和删除临时混帐回购协议如下:
# Stage the PyQt4-installed files and feed a list of their names to tar
# (note that there's no need to actually commit them)
$ git add --all
$ git diff --cached --name-only | tar -jcf pyqt4.tar.bz2 --files-from=-
$ rm -rf .git
然后你就可以运行PyQt4的卸载程序(如果你不想弄乱你的系统Python),并简单解压 pyqt4.tar.bz2
进入你的虚拟环境下的文件夹。如果你已经舒适令,这是一个很好的方式来确保你得到 所有 该PyQt4安装的文件。
注意到:安装PyQt4使用的包装的安装者还将安装SIP。如果你真的想 使用 这SIP创建绑定自己C/C++码在你的虚拟环境下,只要修改的路径 sipconfig.py
文件在您复制过来。否则,SIP是建立系统将仍然是指在系统Python文件夹(例如, C:\Python32
或什么的),这不会工作如果删除所有PyQt4安装的文件。(如果你没有任何打算使用SIP你自己,你可以跳过这一点。)
象征性的链接可能的工作。
我使用Linux(Debian/sid),python3.4,PySide,虚拟环境和PyCharm(IDE),但这些相同的指令将适用于任何包装和发展的环境。
象征性之间的联系 /usr/lib/python3/dist-packages/PySide/
$VIRTUAL_ENV/lib/python3.4/site-packages/PySide/
为我工作。
cd $VIRTUAL_ENV/lib/python3.4/site-packages/
mkdir PySide
cd PySide`
for x in /usr/lib/python3/dist-packages/PySide/* ; do ln -s $x ; done
有趣的是,如果我象征性的链路只有 PySide
目录,它不工作。我需要链接,每个文件的目录。这可能是一个限制PyCharm(我IDE)-我不知道。
试试这个:pip安装python qt5