Czy możliwe jest dodanie pakietów PyQt4/PySide na Virtualenv sandbox?

Używam Virtualenv z zyskiem na moim środowisku programistycznym z web.py, simplejson i innych pakietów zorientowanych na www.
Mam zamiar opracować prosty klient Pythona przy użyciu Qt do ponownego użycia niektórych Api opracowane z web.py.

Czy ktoś tutaj z powodzeniem zainstalował PyQt4 z Virtualenv?
Czy to możliwe?

Pobrałem wszystkie pliki binarne i zainstalowałem {[2] } globalnie w moim katalogu python2. 6.
If I don ' t use --no-site--packages option, Virtualenv poprawnie zawiera PyQt4 w moim nowym Sandboxie, ale oczywiście ze wszystkimi globalnymi pakietami, których nie potrzebuję.

Czy istnieje czysty sposób na przygotowanie nowej piaskownicy z opcją --no-site--packages, a następnie dodanie PyQt4 lub PySide za pomocą pip, easy_install albo jakąś inną magiczną sztuczkę?

Author: systempuntoout, 2009-12-25

13 answers

Powinno wystarczyć utworzenie pustego virtualenv, a następnie skopiowanie do niego zawartości katalogów .../site-packages/PyQt4.

Proponuję zainstalować PyQt4 raz globalnie, zrobić kopię katalogu, odinstalować go, a następnie użyć tej sztuczki, aby utworzyć VEs.

 52
Author: Aaron Digulla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-25 22:17:40

Mam ten sam problem. Używam virtualenvwrapper, więc napisałem ten skrypt, aby stworzyć link do PyQt w każdym nowym środowisku wirtualnym. Może jest przydatna dla kogoś innego:

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

 46
Author: José Luis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-15 08:23:36

Linux debian, python 2.7:

  • Zainstaluj python-qt4 globaly: sudo apt-get install python-qt4
  • Utwórz dowiązanie symboliczne PyQt4 do twojego wirtualnego env ln -s /usr/lib/python2.7/dist-packages/PyQt4/ ~/.virtualenvs/myEnv/lib/python2.7/site-packages/
  • Utwórz dowiązanie symboliczne sip.so do twojego wirtualnego env ln -s /usr/lib/python2.7/dist-packages/sip.so ~/.virtualenvs/myEnv/lib/python2.7/site-packages/
 29
Author: Simanas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-04 08:51:45

Dla tych, którzy chcą używać PyQt4 w Pythonie 3 virtualenv (na OSX) najpierw zainstaluj PyQt4 i SIP (ja użyję homebrew)

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

Następnie utwórz swoje wirtualne środowisko

$ virtualenv ...

Wreszcie symlink (Zmień wersje SIP, PyQt4 i Pythona dla tych zainstalowanych na twoim komputerze)

$ 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
 8
Author: jabaldonedo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-01 10:56:45

Zapytałem czy jest możliwość zainstalowania PySide z virtualenv na irc.freenode.net # pyside kanał i dostał pozytywną odpowiedź z hugopl . Zastosowałem się więc do instrukcji z binariów PySide dla Microsoft Windows i zadziałało. Wyjście jest poniżej.

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.
 7
Author: Piotr Dobrogost,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-22 14:59:30

Załóżmy, że Twój virtualenv nazywa się myProject i używasz virtualenvwrapper. Zakłada się również platformę 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.
 6
Author: AustinMatherne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-07 07:17:57

Najprostszym sposobem jest zainstalowanie tego : vext.pyqt4

To doda pojedynczy pakiet systemowy PyQt4 do twojego virtualenv.

Ubuntu 16.04 użycie:

sudo apt install python3-pyqt4
mkvirtualenv --python=python3.5 venv
pip install --no-use-wheel vext.pyqt4
 6
Author: Arun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-17 02:55:20

Dla PySide 1.2.1 i Ubuntu 12.4

Instaluj Kompilatory, związane z Qt, źródła Pythona

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

Utwórz virt ENV za pomocą virtualenvwrapper

Bądź gotowy do kompilacji 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
 4
Author: b1_,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-28 18:52:01

Jeśli zainstalowałeś pyqt przez brew na Macu (konkretnie ja jestem na Mavericksie):

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 

Oczywiście numery katalogów wersji mogą się z czasem zmieniać.

 4
Author: James Errico,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-14 16:39:42

Zadziałało dla mnie kopiowanie /PyQt4/ i sip.x86_64-linux-gnu.so z /usr/lib/python2.7/dist-packages na <VIRTUALENV>/lib/python2.7/site-packages i zmiana praw własności do tych skopiowanych plików (ponieważ kopie były własnością roota).

 3
Author: heisen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-17 16:27:52

Rozszerzenie odpowiedzi Aarona Digulli, użycie Gita do poprawienia listy plików może być bardzo przydatne. Zazwyczaj robię coś takiego (z powłoki msysGit):

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

Następnie uruchom instalator dla PyQt4 (lub cokolwiek innego). Następnie wykonaj tarball z plików dodanych przez instalator i usuń temp Git repo, w następujący sposób:

# 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

Następnie możesz uruchomić deinstalator PyQt4 (jeśli nie chcesz zaśmiecać swojego Pythona systemowego) i po prostu rozpakować pyqt4.tar.bz2 do folderu virtualenv. Jeśli jest to świetny sposób na uzyskanie wszystkich zainstalowanych plików PyQt4.

Uwaga : instalacja PyQt4 przy użyciu spakowanego instalatora również instaluje SIP. Jeśli rzeczywiście chcesz użyć tego SIP do tworzenia powiązań dla własnego kodu C/C++ wewnątrz virtualenv, będziesz chciał zmodyfikować ścieżki w pliku sipconfig.py po skopiowaniu go. W przeciwnym razie system budowania SIP nadal będzie wskazywał na folder Pythona systemowego (np.]} lub cokolwiek), co nie zadziała, jeśli usuniesz stamtąd wszystkie pliki zainstalowane przez PyQt4. (Jeśli nie masz zamiaru używać SIP samodzielnie, prawdopodobnie możesz to pominąć.)

 2
Author: evadeflow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-19 21:19:48

Dowiązania symboliczne mogą działać.

Używam Linuksa (Debian / sid), Pythona 3.4, PySide, virtualenv i PyCharm (IDE), ale te same instrukcje będą działać dla każdego pakietu i środowiska programistycznego.

Dowiązania symboliczne między /usr/lib/python3/dist-packages/PySide/ $VIRTUAL_ENV/lib/python3.4/site-packages/PySide/ pracuj dla mnie.

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

Co ciekawe, jeśli łączę symbolicznie tylko katalog PySide, to nie działa. Muszę dowiązać symbolicznie każdy plik w katalogu. To może być ograniczenie PyCharm (moje IDE) -- Nie wiem.

 2
Author: kevinarpe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-17 02:56:02

Spróbuj tego: pip install python-qt5

 0
Author: Andrey Nikishaev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-01 16:22:10