Можно ли добавить пакеты PyQt4 / PySide в изолированную программную среду Virtualenv? - PullRequest
59 голосов
/ 26 декабря 2009

Я использую Virtualenv с прибылью в моей среде разработки с web.py, simplejson и другими веб-ориентированными пакетами.
Я собираюсь разработать простой Python-клиент с использованием Qt для повторного использования некоторых API, разработанных с помощью web.py.

Кто-нибудь здесь успешно установил PyQt4 с Virtualenv?
Возможно ли это?

Я скачал все двоичные файлы и в моем каталоге python2.6 глобально установлен PyQt4.
Если я не использую опцию --no-site--packages, Virtualenv правильно включит PyQt4 в мою новую песочницу, но, очевидно, со всеми глобальными пакетами, которые мне не нужны.

Есть ли чистый способ подготовить новую песочницу с опцией --no-site--packages, а затем добавить PyQt4 или PySide, используя pip, easy_install или какой-нибудь другой магический трюк?

Ответы [ 13 ]

52 голосов
/ 26 декабря 2009

Этого должно быть достаточно, чтобы создать пустой virtualenv, а затем скопировать в него содержимое каталогов .../site-packages/PyQt4.

Я предлагаю один раз установить PyQt4 глобально, сделать копию каталога, удалить его и затем использовать этот трюк для создания виртуальных сред.

46 голосов
/ 15 марта 2012

У меня такая же проблема. Я использую virtualenvwrapper, поэтому я написал этот скрипт для создания ссылки на PyQt в каждой новой виртуальной среде. Может быть кому-то пригодится:

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

ссылка на гист

28 голосов
/ 04 марта 2015

Linux Debian, Python 2.7:

  • Установить python-qt4 globaly: sudo apt-get install python-qt4
  • Создать символическую ссылку PyQt4 на вашу виртуальную среду ln -s /usr/lib/python2.7/dist-packages/PyQt4/ ~/.virtualenvs/myEnv/lib/python2.7/site-packages/
  • Создайте символическую ссылку sip.so на вашу виртуальную среду ln -s /usr/lib/python2.7/dist-packages/sip.so ~/.virtualenvs/myEnv/lib/python2.7/site-packages/
8 голосов
/ 01 апреля 2014

Для тех, кто хочет использовать PyQt4 в Python 3 virtualenv (в OSX), вы сначала устанавливаете PyQt4 и SIP (я буду использовать homebrew)

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

Затем создайте свою виртуальную среду

$ virtualenv ...

Наконец, символическая ссылка (измените версии SIP, PyQt4 и Python для тех, которые установлены на вашем компьютере)

$ 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
7 голосов
/ 12 января 2011

Я спросил, можно ли установить PySide из virtualenv на канал irc.freenode.net #pyside и получил положительный ответ от hugopl . Поэтому я следовал инструкциям PySide Binaries для Microsoft Windows , и это сработало. Выход ниже.

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.
6 голосов
/ 20 декабря 2012

Давайте предположим, что ваша virtualenv называется myProject, и вы используете virtualenvwrapper. Также предполагается платформа 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.
5 голосов
/ 18 декабря 2017

Самый простой способ установить это: vext.pyqt4

Это добавит единственный системный пакет PyQt4 к вашему virtualenv.

Использование Ubuntu 16.04:

sudo apt install python3-pyqt4
mkvirtualenv --python=python3.5 venv
pip install --no-use-wheel vext.pyqt4
4 голосов
/ 14 февраля 2014

Если вы установили pyqt через brew на Mac (в частности, я на 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 

Конечно, номера папок версий могут со временем меняться.

4 голосов
/ 28 декабря 2013

Для PySide 1.2.1 и Ubuntu 12.4

Установка компиляторов, связанных с Qt, исходники Python

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

Создать виртуальную среду с помощью virtualenvwrapper

Будьте готовы к компиляции Qt (~ 30 мин)

$ mkvirtualenv ve_name
(ve_name)$ pip install PySide

Тест

$ python -c "from PyQt4 import QtCore; print QtCore.PYQT_VERSION_STR"
4.9.1
3 голосов
/ 17 декабря 2015

Для меня работало копирование /PyQt4/ и sip.x86_64-linux-gnu.so с /usr/lib/python2.7/dist-packages на <VIRTUALENV>/lib/python2.7/site-packages и изменение прав владения для этих скопированных файлов (поскольку копии принадлежали пользователю root).

...