¿Es posible agregar paquetes PyQt4 / PySide en una caja de arena Virtualenv?

Estoy usando Virtualenv con beneficios en mi entorno de desarrollo con web.py , simplejson y otros paquetes orientados a la web.
Voy a desarrollar un cliente Python simple utilizando Qt para reutilizar algunos Api desarrollados con web.py.

¿Alguien aquí ha instalado correctamente PyQt4 con Virtualenv?
¿Es posible?

He descargado todos los archivos binarios y tengo PyQt4 instalado globalmente en mi directorio python2.6.
Si no uso la --no-site--packages , Virtualenv incluye correctamente PyQt4 en mi nuevo sandbox pero, obviamente, con todos los paquetes globales que no necesito.

¿Existe una forma limpia de preparar una nueva zona de pruebas con la --no-site--packages y luego agregar PyQt4 o PySide usando pip , easy_install o algún otro truco de magia?

Debería ser suficiente para crear un virtualenv vacío y luego copiar los contenidos de los directorios .../site-packages/PyQt4 en él.

Sugiero instalar PyQt4 una vez globalmente, hacer una copia del directorio, desinstalarlo y luego usar este truco para crear VEs.

Tengo el mismo problema. Uso virtualenvwrapper, así que escribí este script para crear un enlace a PyQt en cada nuevo entorno virtual. Tal vez sea útil para otra persona:

 #!/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 

enlace a la esencia

Linux debian, python 2.7:

  • Instale python-qt4 globaly: sudo apt-get install python-qt4
  • Cree un enlace simbólico de PyQt4 a su entorno virtual ln -s /usr/lib/python2.7/dist-packages/PyQt4/ ~/.virtualenvs/myEnv/lib/python2.7/site-packages/
  • Cree un enlace simbólico de sip.so a su entorno virtual ln -s /usr/lib/python2.7/dist-packages/sip.so ~/.virtualenvs/myEnv/lib/python2.7/site-packages/

Para aquellos que quieran usar PyQt4 en un Python 3 virtualenv (en OSX) primero instale PyQt4 y SIP (usaré homebrew)

 $ brew install python3 $ brew install sip --with-python3 $ brew install pyqt --with-python3 

Entonces crea tu entorno virtual

 $ virtualenv ... 

Finalmente, enlace simbólico (cambie las versiones de SIP, PyQt4 y Python para las instaladas en su máquina)

 $ 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 

Pregunté si es posible instalar PySide desde virtualenv en irc.freenode.net #pyside canal y obtuve una respuesta positiva de hugopl . Así que seguí las instrucciones de PySide Binaries para Microsoft Windows y funcionó. La salida está abajo.

 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. 

Asummos que su virtualenv se llama myProject y está usando virtualenvwrapper. También se asume una plataforma 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. 

La forma más fácil es instalar esto: vext.pyqt4

Esto agregará el paquete de sistema único PyQt4 a su virtualenv.

Uso de Ubuntu 16.04:

 sudo apt install python3-pyqt4 mkvirtualenv --python=python3.5 venv pip install --no-use-wheel vext.pyqt4 

Para PySide 1.2.1 y Ubuntu 12.4

Instalar comstackdores, relacionados con Qt, fonts de python

 sudo apt-get install cmake qt4-qmake qt-sdk python-dev 

Crear env env virtualenvwrapper con virtualenvwrapper

Esté listo para comstackr Qt (~ 30 min)

 $ mkvirtualenv ve_name (ve_name)$ pip install PySide 

Prueba

 $ python -c "from PyQt4 import QtCore; print QtCore.PYQT_VERSION_STR" 4.9.1 

Si instaló pyqt a través de brew en una Mac (específicamente estoy en Mavericks):

 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 

Por supuesto, esos números de carpeta de versión pueden cambiar con el tiempo.

Lo que funcionó para mí fue copiar /PyQt4/ y sip.x86_64-linux-gnu.so de sip.x86_64-linux-gnu.so a /lib/python2.7/site-packages y cambiar la propiedad permisos en estos archivos copiados (ya que las copias eran propiedad de root).

Ampliar la respuesta de Aaron Digulla, usar git para obtener la lista de archivos correcta puede ser realmente útil. Por lo general hago algo como esto (desde un shell msysGit):

 # Create temp git repo for the pristine Python installation $ cd /c/Python27 $ git init -q $ git add . $ git commit -qm "Initial commit" 

Luego ejecuta el instalador para PyQt4 (o lo que sea). Después de eso, cree un archivo comprimido con los archivos que el instalador agregó y elimine el repository temporal de git, de la siguiente manera:

 # 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 

Luego puede ejecutar el desinstalador de PyQt4 (si no desea saturar su sistema Python), y simplemente pyqt4.tar.bz2 en su carpeta virtualenv. Si ya te sientes cómodo usando git, esta es una excelente manera de asegurarte de obtener todos los archivos instalados con PyQt4.

NOTA : la instalación de PyQt4 mediante el instalador empaquetado también instala SIP. Si realmente desea usar este SIP para crear enlaces para su propio código C / C ++ dentro de su virtualenv, querrá modificar las rutas en el archivo sipconfig.py después de copiarlo. De lo contrario, el sistema de comstackción de SIP seguirá apuntando a la carpeta Python del sistema (por ejemplo, C:\Python32 o lo que sea), que no funcionará si elimina todos los archivos instalados desde PyQt4 desde allí. (Si no tiene la intención de usar SIP por sí mismo, probablemente puede omitir esto).

Los enlaces simbólicos pueden funcionar.

Yo uso Linux (Debian / sid), Python 3.4, PySide, virtualenv y PyCharm (IDE), pero estas mismas instrucciones funcionarán para cualquier paquete y entorno de desarrollo.

Enlaces simbólicos entre /usr/lib/python3/dist-packages/PySide/ $VIRTUAL_ENV/lib/python3.4/site-packages/PySide/ work for me.

 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 

Curiosamente, si yo vinculo simbólicamente solo el directorio de PySide , no funciona. Necesito un enlace simbólico de cada archivo dentro del directorio. Eso puede ser una limitación de PyCharm (mi IDE). No lo sé.

Prueba este: pip instala python-qt5