Frage

Ich bin mit virtualenv mit Gewinn auf meiner Entwicklungsumgebung mit web.py, simplejson und anderen Web orientierte Pakete.
Ich werde ein einfaches Python-Client mit Qt entwickeln, mit web.py. einige Api entwickelt wiederzuverwenden

Hat jemand hier erfolgreich PyQt4 mit virtualenv installiert hatte?
Ist es möglich?

Ich habe alle die Binärdateien heruntergeladen und haben PyQt4 installiert global auf meinem python2.6-Verzeichnis.
Wenn ich nicht --no-site--packages Option verwenden, virtualenv richtig schließt PyQt4 in meiner neuen Sandbox aber offensichtlich mit allen globalen Pakete, die ich nicht brauchen.

Gibt es eine saubere Art und Weise eine neue Sandbox mit --no-site--packages Option vorzubereiten und fügen Sie dann PyQt4 oder PySide mit pip, easy_install oder einem anderen Zaubertrick?

War es hilfreich?

Lösung

Es sollte genug sein, um eine leere virtualenv zu erstellen und kopieren Sie den Inhalt der .../site-packages/PyQt4 Verzeichnisse hinein.

schlage ich PyQt4 einmal global, eine Kopie des Verzeichnisses, zu deinstallieren, es zu installieren und dann diesen Trick verwenden, um virtuelle Umgebungen zu erstellen.

Andere Tipps

Ich habe das gleiche Problem. Ich benutze virtualenvwrapper, so dass ich dieses Skript schrieb einen Link zu PyQt in jeder neuen virtuellen Umgebung zu schaffen. Vielleicht ist für jemand anderen nützlich:

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

Linux Debian, Python 2.7:

  • Installieren python-qt4 globaly: sudo apt-get install python-qt4
  • Erstellen Sie symbolische Verknüpfung von PyQt4 in Ihre virtuelle env ln -s /usr/lib/python2.7/dist-packages/PyQt4/ ~/.virtualenvs/myEnv/lib/python2.7/site-packages/
  • Erstellen Sie symbolische Verknüpfung von sip.so in Ihre virtuelle envln -s /usr/lib/python2.7/dist-packages/sip.so ~/.virtualenvs/myEnv/lib/python2.7/site-packages/

Für diejenigen, die PyQt4 in einem Python 3 virtualenv (OSX) der ersten Installation PyQt4 und SIP (I Homebrew wird verwenden)

verwenden möchten
$ brew install python3
$ brew install sip --with-python3
$ brew install pyqt --with-python3

Dann erstellen Sie Ihre virtuelle Umgebung

$ virtualenv ...

Schließlich Symlink (ändern Sie die Versionen von SIP, PyQt4 und Python für die auf Ihrem Computer installiert ist)

$ 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

Ich fragte, ob es möglich ist, pyside zu installieren aus virtualenv auf irc.freenode.net #pyside Kanal und bekam positive Antwort von hugopl . So folgte ich Anweisungen von pyside Binaries für Microsoft Windows und es funktionierte. Der Ausgang ist unten.

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.

Nehmen wir an, Ihr virtualenv ist myProject genannt und Sie verwenden virtualenvwrapper. Ein Unix-Plattform wird auch angenommen.

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

Der einfachste Weg, dies zu installieren: vext.pyqt4

Dies wird das einzige System PyQt4 Paket zu Ihrem virtualenv hinzuzufügen.

Ubuntu 16.04 Nutzung:

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

Für pyside 1.2.1 und Ubuntu 12.4

Installieren Compiler, Qt verwandt, Python Quellen

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

Erstellen virt env withvirtualenvwrapper

Seien Sie bereit für das Kompilieren von 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

Wenn Sie installiert pyqt über Gebräu auf einem Mac (genauer gesagt ich auf Mavericks bin):

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 

Natürlich diese Version Ordnernummern Zeit ändern können.

Was für mich gearbeitet wurde Kopieren /PyQt4/ und sip.x86_64-linux-gnu.so von /usr/lib/python2.7/dist-packages zu <VIRTUALENV>/lib/python2.7/site-packages und die Änderung der Eigentumsrechte auf diesen kopierten Dateien (da die Kopien im Besitz von Root wurden).

Die Erweiterung auf Aaron Digulla Antwort, git mit der Dateiliste richtig machen kann wirklich nützlich sein. Normalerweise mache ich so etwas wie diese (von einer msysGit Shell):

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

Führen Sie dann das Installationsprogramm für PyQt4 (oder was auch immer). Danach wird einen Tarball der Dateien machen, dass das Installationsprogramm hinzugefügt und den temporären git Repo löschen, wie folgt:

# 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

Dann können Sie PyQt4 das Deinstallationsprogramm ausführen (wenn Sie möchten, um Ihr System Python nicht verunstalteten) und einfach untar pyqt4.tar.bz2 in Ihrem virtualenv Ordner. Wenn Sie bereits vertraut sind mit git, ist dies eine gute Möglichkeit, Sie, um sicherzustellen, bekommen alle die PyQt4-Dateien installiert.

Hinweis : Die Installation PyQt4 auch das verpackte Installer installiert SIP. Wenn Sie wirklich wollen Verwendung dieser SIP-Anbindung für Ihren eigenen C / C ++ Code in Ihrem virtualenv zu erstellen, sollten Sie die Pfade in der sipconfig.py-Datei ändern, nachdem Sie es kopieren über. Ansonsten noch Build-System des SIP wird im System Python Ordner werden zeigt (zum Beispiel C:\Python32 oder was auch immer), die nicht funktionieren, wenn Sie alle PyQt4 installierten Dateien von dort löschen. (Wenn Sie haben keine Absicht, mit SIP selbst, können Sie wahrscheinlich diese überspringen.)

Symbolische Links funktionieren.

Ich benutze Linux (Debian / sid), Python 3.4, pyside, virtualenv und PyCharm (IDE), aber diese gleichen Anweisungen für jedes Paket und Entwicklungsumgebung arbeiten.

Symbolische Links zwischen /usr/lib/python3/dist-packages/PySide/ $VIRTUAL_ENV/lib/python3.4/site-packages/PySide/ Arbeit für mich.

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

Interessanterweise, wenn ich symbolische Verknüpfung nur das PySide Verzeichnis, funktioniert es nicht. Ich brauche jede Datei im Verzeichnis Symlink. Das mag eine Beschränkung von PyCharm sein (meine IDE) -. Ich weiß nicht,

Versuchen Sie dieses: pip installieren Python-QT5

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top