私は Virtualenv を使用しており、web.py
、simplejson
およびその他のWeb指向のパッケージを使用した開発環境で利益を得ています。
簡単なpython Qtを使用してweb.pyで開発されたApiを再利用するクライアントを開発します。
ここの誰かがVirtualenvでPyQt4を正常にインストールしましたか?
出来ますか?
すべてのバイナリをダウンロードし、PyQt4
をpython2.6ディレクトリにグローバルにインストールしました。--no-site--packages
オプションを使用しない場合、Virtualenvは新しいサンドボックスにPyQt4
を正しく含めますが、明らかに、不要なグローバルパッケージはすべて含まれます。
--no-site--packages
オプションを使用して新しいサンドボックスを準備し、PySide
、PyQt4
またはその他の魔法のトリックを使用してeasy_install
またはpip
を追加するクリーンな方法はありますか?
空のvirtualenvを作成し、.../site-packages/PyQt4
ディレクトリの内容をそこにコピーすれば十分です。
PyQt4を一度グローバルにインストールし、ディレクトリのコピーを作成し、それをアンインストールしてから、このトリックを使用してVEを作成することをお勧めします。
私は同じ問題を抱えています。私は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
Linux debian、python 2.7:
Sudo apt-get install python-qt4
ln -s /usr/lib/python2.7/dist-packages/PyQt4/ ~/.virtualenvs/myEnv/lib/python2.7/site-packages/
ln -s /usr/lib/python2.7/dist-packages/sip.so ~/.virtualenvs/myEnv/lib/python2.7/site-packages/
へのsip.soのシンボリックリンクを作成しますPython 3 virtualenv(OSX))でPyQt4を使用する場合は、最初に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
Irc.freenode.net #pysideチャネルのvirtualenvからPySideをインストールできるかどうかを尋ね、hugoplから肯定的な回答を得ました。 Microsoft Windows用のPySide Binaries からの指示に従ったので、うまくいきました。出力は次のとおりです。
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.
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.
最も簡単な方法はこれをインストールすることです: vext.pyqt4
これにより、単一システムPyQt4
パッケージがvirtualenvに追加されます。
Ubuntu 16.04の使用法:
Sudo apt install python3-pyqt4
mkvirtualenv --python=python3.5 venv
pip install --no-use-wheel vext.pyqt4
Brewを使用してMacにpyqtをインストールした場合(具体的には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
もちろん、これらのバージョンのフォルダー番号は時間の経過とともに変化する可能性があります。
PySide 1.2.1およびUbuntu 12.4の場合
Qt関連のコンパイラをインストールするpython sources
Sudo apt-get install cmake qt4-qmake qt-sdk python-dev
virtualenvwrapper
でvirt envを作成します
Qtをコンパイルする準備をします(〜30分)
$ mkvirtualenv ve_name
(ve_name)$ pip install PySide
テスト
$ python -c "from PyQt4 import QtCore; print QtCore.PYQT_VERSION_STR"
4.9.1
私のために働いたのは、/PyQt4/
とsip.x86_64-linux-gnu.so
を/usr/lib/python2.7/dist-packages
から<VIRTUALENV>/lib/python2.7/site-packages
にコピーし、これらのコピーされたファイルの所有権を変更することでした(コピーはルートによって所有されていたため)。
シンボリックリンクが機能する場合があります。
Linux(Debian/sid)、python 3.4、PySide、virtualenv、およびPyCharm(IDE))を使用していますが、これらの同じ手順はどのパッケージおよび開発環境でも機能します。
/usr/lib/python3/dist-packages/PySide/
$VIRTUAL_ENV/lib/python3.4/site-packages/PySide/
間のシンボリックリンクが機能します。
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
興味深いことに、PySide
ディレクトリのみをシンボリックリンクすると、機能しません。ディレクトリ内の各ファイルをシンボリックリンクする必要があります。それはPyCharm(私のIDE)の制限かもしれません-知りません。
Aaron Digullaの答えを拡張し、gitを使用してファイルリストを正しく取得することは非常に便利です。私は通常、次のようなことを行います(msysGitシェルから)。
# Create temp git repo for the pristine Python installation
$ cd /c/Python27
$ git init -q
$ git add .
$ git commit -qm "Initial commit"
次に、PyQt4(またはその他)のインストーラーを実行します。その後、インストーラーが追加したファイルのtarballを作成し、次のようにtemp gitリポジトリを削除します。
# 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
次に、PyQt4のアンインストーラーを実行して(システムPythonを煩雑にしたくない場合)、単にpyqt4.tar.bz2
をvirtualenvフォルダーに展開します。すでにgitの使用に慣れている場合、これはPyQt4がインストールされたファイルをall取得するための優れた方法です。
[〜#〜] note [〜#〜]:パッケージ化されたインストーラーを使用してPyQt4をインストールすると、SIPもインストールされます。実際にuseを使用する場合は、このSIPを使用して、virtualenv内に独自のC/C++コードのバインディングを作成します。 'sipconfig.py
ファイルのパスは、コピー後に変更する必要があります。それ以外の場合、SIPのビルドシステムはシステムPythonフォルダー(たとえば、C:\Python32
または何でも)、そこからすべてのPyQt4がインストールされたファイルを削除すると動作しません(SIP自分を使用する意図がない場合は、おそらくスキップできます)この。)