Domanda

Sto utilizzando Virtualenv con profitto sul mio ambiente di sviluppo con web.py, simplejson e altri web oriented pacchetti.
Ho intenzione di sviluppare un semplice client python utilizzando Qt di riutilizzare alcune Api sviluppato con web.py.

Qualcuno qui aveva con successo installato PyQt4 con Virtualenv?
È possibile?

Ho scaricato tutti i file binari e hanno PyQt4 installati in tutto il mondo sul mio python2.6 di directory.
Se io non uso --no-site--packages opzione, Virtualenv include correttamente PyQt4 nella mia sandbox nuovo ma, ovviamente, con tutte le global pacchetti che non ho bisogno.

C'è un modo pulito per preparare un nuovo sandbox con --no-site--packages opzione e quindi aggiungere PyQt4 o PySide utilizzando pip, easy_install o qualche altro trucco di magia?

È stato utile?

Soluzione

Dovrebbe essere sufficiente per creare un virtualenv vuoto e quindi copiare il contenuto delle directory .../site-packages/PyQt4 in esso.

Suggerisco di installare PyQt4 una volta a livello globale, fare una copia della directory, disinstallarlo e quindi utilizzare questo trucco per creare Ves.

Altri suggerimenti

Ho lo stesso problema. Io uso virtualenvwrapper, così ho scritto questo script per creare un collegamento a PyQt in ogni nuovo ambiente virtuale. Forse è utile per qualcun altro:

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

link per GIST

Linux Debian, python 2.7:

  • Installa python-qt4 globaly: sudo apt-get install python-qt4
  • Crea collegamento simbolico del PyQt4 al tuo ln -s /usr/lib/python2.7/dist-packages/PyQt4/ ~/.virtualenvs/myEnv/lib/python2.7/site-packages/ ENV virtuale
  • Crea collegamento simbolico del sip.so al tuo envln -s /usr/lib/python2.7/dist-packages/sip.so ~/.virtualenvs/myEnv/lib/python2.7/site-packages/ virtuale

Per coloro che vogliono usare PyQt4 in Python 3 virtualenv (su OSX) si installa PyQt4 e SIP (I useranno homebrew)

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

Quindi creare l'ambiente virtuale

$ virtualenv ...

Infine link simbolico (modificare le versioni di SIP, PyQt4 e Python per quelli installati sulla vostra macchina)

$ 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

ho chiesto se è possibile installare PySide dall'interno virtualenv sul canale #pyside irc.freenode.net e ottenuto risposta positiva da hugopl . Così ho seguito le istruzioni da PySide binari per Microsoft Windows e ha funzionato. L'uscita è al di sotto.

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.

Supponiamo che il virtualenv si chiama myProject e si utilizza virtualenvwrapper. Una piattaforma Unix è anche assunto.

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

Il modo più semplice è quello di installare questo: vext.pyqt4

Questo aggiungerà il pacchetto unico sistema PyQt4 al vostro virtualenv.

Ubuntu 16.04 utilizzo:

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

Per PySide 1.2.1 e Ubuntu 12.4

Installa compilatori, Qt connessi, fonti pitone

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

Crea virt ENV withvirtualenvwrapper

Essere pronti per la compilazione di Qt (~ 30 min)

$ mkvirtualenv ve_name
(ve_name)$ pip install PySide

Prova

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

Se hai installato PyQt tramite birra su un Mac (in particolare sono in 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 

Naturalmente quei numeri delle cartelle versione può cambiare nel tempo.

Quello che ha funzionato per me è stata la copia /PyQt4/ e sip.x86_64-linux-gnu.so da /usr/lib/python2.7/dist-packages a <VIRTUALENV>/lib/python2.7/site-packages e la modifica delle autorizzazioni di proprietà su questi file copiati (dal momento che le copie erano di proprietà di root).

Espansione su Aaron Digulla risposta, usare git per ottenere l'elenco dei file diritto può essere veramente utile.Io di solito fare qualcosa di simile a questo (da 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"

Quindi eseguire il programma di installazione per PyQt4 (o quello che è).Dopo di che, fare un archivio dei file che il programma di installazione aggiunto ed eliminare la temp di un repository git, come segue:

# 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

È quindi possibile eseguire PyQt4 il programma di disinstallazione (se non voglio ingombrare il vostro sistema di Python), e sufficiente decomprimere pyqt4.tar.bz2 nel tuo virtualenv cartella.Se stai già usando git, questo è un ottimo modo per garantire che si ottiene tutti il PyQt4-file installati.

NOTA:L'installazione di PyQt4 utilizzando il pacchetto installer installa anche il protocollo SIP.Se si vuole realmente utilizzare questo SIP per la creazione di associazioni per il vostro codice C/C++ all'interno del vostro virtualenv, si desidera modificare i percorsi in sipconfig.py file dopo la copia di sopra.In caso contrario, SIP, il sistema di generazione sarà ancora riferimento al sistema di Python cartella (ad esempio, C:\Python32 o quello che è), che non funziona se si elimina tutte le PyQt4-installato i file da lì.(Se non hai intenzione di usare SIP te, probabilmente si può saltare questo.)

I collegamenti simbolici possono funzionare.

io uso Linux (Debian / sid), python 3.4, PySide, virtualenv, e PyCharm (IDE), ma queste stesse istruzioni funzionerà per qualsiasi ambiente di pacchetto e di sviluppo.

I collegamenti simbolici tra il lavoro /usr/lib/python3/dist-packages/PySide/ $VIRTUAL_ENV/lib/python3.4/site-packages/PySide/ per 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

È interessante notare che, se io link simbolico solo la directory PySide, non funziona. Ho bisogno di un link simbolico ogni file all'interno della directory. Che può essere una limitazione di PyCharm (mio IDE) -. Non so

Prova questo: pip installare python-QT5

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top