Question

J'utilise virtualenv avec profit sur mon environnement de développement avec web.py, simplejson et autres web paquets orientés.
Je vais développer un client simple python utilisant Qt pour réutiliser certains Api développé avec web.py.

Est-ce que quelqu'un ici avait installé avec succès PyQt4 avec virtualenv?
Est-il possible?

Je l'ai téléchargé tous les fichiers binaires et ont PyQt4 installé globalement sur mon répertoire python2.6.
Si je ne l'utilise pas l'option --no-site--packages, virtualenv comprend correctement PyQt4 dans mon nouveau bac à sable, mais, évidemment, avec tous les paquets globaux que je ne ai pas besoin.

Y at-il un moyen propre pour préparer un nouveau bac à sable avec option --no-site--packages, puis ajoutez PyQt4 ou PySide en utilisant pip, easy_install ou d'un autre tour de magie?

Était-ce utile?

La solution

Il devrait être suffisant pour créer un virtualenv vide puis copiez le contenu des répertoires .../site-packages/PyQt4 en elle.

Je suggère d'installer PyQt4 une fois dans le monde, faire une copie du répertoire, le désinstaller, puis utiliser cette astuce pour créer VEs.

Autres conseils

J'ai le même problème. J'utilise virtualenvwrapper, j'ai donc écrit ce script pour créer un lien vers PyQt dans chaque nouvel environnement virtuel. Peut-être est utile pour quelqu'un d'autre:

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

lien vers Gist

Linux debian, Python 2.7:

  • Installer python-Qt4 globaly: sudo apt-get install python-qt4
  • Créer un lien symbolique de PyQt4 à votre ln -s /usr/lib/python2.7/dist-packages/PyQt4/ ~/.virtualenvs/myEnv/lib/python2.7/site-packages/ env virtuel
  • Créer un lien symbolique de sip.so à votre envln -s /usr/lib/python2.7/dist-packages/sip.so ~/.virtualenvs/myEnv/lib/python2.7/site-packages/ virtuel

Pour ceux qui veulent utiliser PyQt4 dans un Python 3 virtualenv (sur OSX) vous devez d'abord installer PyQt4 et SIP (je vais utiliser homebrew)

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

Ensuite, créez votre environnement virtuel

$ virtualenv ...

Enfin symlink (changer les versions de SIP, PyQt4 et Python pour ceux installés sur votre machine)

$ 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

J'ai demandé s'il est possible d'installer PySide à partir de virtualenv sur le canal #pyside irc.freenode.net et obtenu réponse positive de hugopl . Donc, je suivais les instructions de Binaires pyside Microsoft Windows et cela a fonctionné. La sortie est au-dessous.

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.

Supposons que votre virtualenv est MyProject et que vous utilisez virtualenvwrapper. Une plate-forme Unix est également pris en charge.

$ 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.

plus simple est d'installer ceci: vext.pyqt4

Cela va ajouter le package PyQt4 système unique à votre virtualenv.

Utilisation Ubuntu 16.04:

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

Pour PySide 1.2.1 et Ubuntu 12.4

Installer les compilateurs, Qt liés, sources de python

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

Créer virt withvirtualenvwrapper env

Soyez prêt pour compiler Qt (~ 30 min)

$ mkvirtualenv ve_name
(ve_name)$ pip install PySide

test

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

Si vous avez installé pyqt par infusion sur un Mac (Plus précisément, je suis sur 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 

Bien sûr, ces numéros de dossier de version peut changer au fil du temps.

Ce qui a fonctionné pour moi copiait /PyQt4/ et sip.x86_64-linux-gnu.so de /usr/lib/python2.7/dist-packages à <VIRTUALENV>/lib/python2.7/site-packages et la modification des autorisations de propriété sur ces fichiers copiés (depuis les copies appartenaient à la racine).

L'expansion sur la réponse d'Aaron Digulla, en utilisant git pour obtenir la liste des fichiers peut être vraiment droit à portée de main. Je fais habituellement quelque chose comme ça (à partir d'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"

Ensuite, exécutez le programme d'installation pour PyQt4 (ou autre). Après cela, faire un tarball des fichiers que le programme d'installation ajouté et supprimer le git temporaire, comme suit:

# 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

Ensuite, vous pouvez exécuter le programme de désinstallation de PyQt4 (si vous ne voulez pas encombrer votre système Python), et simplement untar pyqt4.tar.bz2 dans votre dossier virtualenv. Si vous êtes déjà à l'aise avec git, ceci est une excellente façon de vous assurer d'obtenir tous les fichiers PyQt4 installés.

NOTE : Installation PyQt4 à l'aide du programme d'installation installe également emballé SIP. Si vous voulez vraiment utiliser ce SIP pour créer des liaisons pour votre propre code C / C ++ dans votre virtualenv, vous souhaitez modifier les chemins dans le fichier sipconfig.py après avoir copié sur. Dans le cas contraire, le système de construction de SIP sera toujours pointer sur le dossier Python du système (par exemple, C:\Python32 ou autre), qui ne fonctionnera pas si vous supprimez tous les fichiers PyQt4 installés à partir de là. (Si vous n'avez pas l'intention d'utiliser vous-même SIP, vous pouvez probablement passer cette étape.)

Les liens symboliques peuvent travailler.

J'utilise Linux (Debian / sid), python 3.4, PySide, virtualenv et PyCharm (IDE), mais ces mêmes instructions fonctionnera pour tout environnement de l'emballage et le développement.

Les liens symboliques entre le travail de /usr/lib/python3/dist-packages/PySide/ $VIRTUAL_ENV/lib/python3.4/site-packages/PySide/ pour moi.

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

Fait intéressant, si je lien symbolique que le répertoire de PySide, il ne fonctionne pas. Je dois créer un lien symbolique chaque fichier dans le répertoire. Cela peut être une limitation de PyCharm (mon IDE) -. Je ne sais pas

Essayez celui-ci: pip install-QT5 python

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top