Pregunta

Estoy usando Virtualenv con fines de lucro en mi entorno de desarrollo con web.py, simplejson web y otra orientada a paquetes.
Voy a elaborar un sencillo cliente de python usando Qt volver a utilizar una Api desarrollada con web.py.

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

He descargado todos los archivos binarios y han PyQt4 instalada a nivel mundial en mi python2.6 directorio.
Si yo no uso --no-site--packages opción, Virtualenv correctamente incluye PyQt4 en mi caja de arena, pero, obviamente, con todo el mundial de paquetes que no necesito.

Es allí una manera limpia para la preparación de un nuevo sandbox con --no-site--packages opción y, a continuación, agregue PyQt4 o PySide el uso de pip, easy_install o algún otro truco de magia?

¿Fue útil?

Solución

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

Le sugiero instalar PyQt4 vez a nivel mundial, hacer una copia del directorio, desinstalarlo y luego usar este truco para crear entornos virtuales.

Otros consejos

Tengo el mismo problema. Yo uso virtualenvwrapper, así que escribí este script para crear un enlace a PyQt en cada nuevo entorno virtual. Tal vez es ú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 Gist

Debian Linux, Python 2.7:

  • instalar Python-Qt4 globaly: sudo apt-get install python-qt4
  • Crear un enlace simbólico de PyQt4 a su ln -s /usr/lib/python2.7/dist-packages/PyQt4/ ~/.virtualenvs/myEnv/lib/python2.7/site-packages/ env virtuales
  • Crear un enlace simbólico de sip.so a su envln -s /usr/lib/python2.7/dist-packages/sip.so ~/.virtualenvs/myEnv/lib/python2.7/site-packages/ virtuales

Para aquellos que quieran utilizar PyQt4 en un virtualenv Python 3 (en OSX) se instala por primera PyQt4 y SIP (I utilizarán homebrew)

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

A continuación, crear su entorno virtual

$ virtualenv ...

Por último enlace simbólico (cambiar las versiones de SIP, PyQt4 y Python para aquellos instalados 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

Me pregunté si es posible instalar PySide desde dentro virtualenv en el canal #pyside irc.freenode.net y obtuve respuesta positiva de hugopl . Así que seguí las instrucciones de PySide binarios de Microsoft Windows y funcionó. La salida es a continuación.

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.

Supongamos que su virtualenv se llama miProyecto y está utilizando virtualenvwrapper. También se supone 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 manera más fácil es instalar esto: vext.pyqt4

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

Ubuntu 16,04 uso:

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 compiladores, relacionados con Qt, fuentes pitón

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

Crea virt env withvirtualenvwrapper

Esté listo para compilar 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 ha instalado pyqt a través de cerveza en un Mac (en concreto 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 puede cambiar con el tiempo.

Lo que funcionó para mí estaba copiando /PyQt4/ y sip.x86_64-linux-gnu.so de /usr/lib/python2.7/dist-packages a <VIRTUALENV>/lib/python2.7/site-packages y cambiar los permisos de propiedad sobre estos archivos copiados (ya que las copias eran propiedad de la raíz).

Ampliación de Aarón Digulla la respuesta, usando git para obtener la lista de archivos de la derecha puede ser realmente útil.Yo suelo hacer algo parecido a esto (de un msysGit shell):

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

A continuación, ejecute el instalador de PyQt4 (o lo que sea).Después de eso, hacer una copia de respaldo de los archivos que el instalador añadido y eliminar la temp repositorio git, como sigue:

# 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

A continuación, puede ejecutar PyQt4 uninstaller (si no quieren estorbar encima de su sistema de Python), y simplemente descomprima el archivo pyqt4.tar.bz2 en su virtualenv carpeta.Si ya se siente cómodo usando git, esta es una gran manera de asegurarse de que usted consigue todos el PyQt4-archivos instalados.

NOTA:La instalación de PyQt4 utilizando el paquete instalador instala también la SIP.Si usted realmente desea uso este SIP para crear enlaces para su propio C/C++ de código dentro de la virtualenv, usted querrá modificar las rutas de acceso en el sipconfig.py archivo después de copiarla.De lo contrario, SIP sistema de compilación todavía apunta a que el sistema de Python carpeta (por ejemplo, C:\Python32 o lo que sea), que no funcionará si usted eliminar todos los PyQt4-instala los archivos desde allí.(Si usted no tiene ninguna intención de usar SIP usted mismo, usted probablemente puede omitir este paso.)

Los enlaces simbólicos pueden trabajar.

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

Los enlaces simbólicos entre el trabajo /usr/lib/python3/dist-packages/PySide/ $VIRTUAL_ENV/lib/python3.4/site-packages/PySide/ para mí.

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

Es interesante que, si yo enlace simbólico sólo el directorio PySide, no funciona. Necesito enlazar simbólicamente cada archivo dentro del directorio. Eso puede ser una limitación de PyCharm (mi IDE) -. No sé

Prueba con esto: PIP instalar python-QT5

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top