[もともとこの質問を別のタイトルでStackOverflowに投稿しました( here )が、後で私の問題がapt-get
に特有であることに気付いたので、ここに再投稿しています。 。重複してすみません。]
Ubuntu(およびvirtualenv内)にPyQtをインストールしようとしています。私が扱っている障害のリストは長すぎてここに含めることはできませんが、私が現在乗り越えようとしているものは次のとおりです。
% workon myvenv
(myvenv)% cd ~/.virtualenvs/myvenv/build/pyqt
(myvenv)% python ./configure.py
Traceback (most recent call last):
File "./configure.py", line 32, in <module>
import sipconfig
では、sipconfig
...をインストールしましょう。
(myvenv)% pip install SIP
Downloading/unpacking SIP
Downloading sip-4.14.8-snapshot-02bdf6cc32c1.Zip (848Kb): 848Kb downloaded
Running setup.py Egg_info for package SIP
Traceback (most recent call last):
File "<string>", line 14, in <module>
IOError: [Errno 2] No such file or directory: '/home/yt/.virtualenvs/myvenv/build/SIP/setup.py'
Complete output from command python setup.py Egg_info:
Traceback (most recent call last):
File "<string>", line 14, in <module>
IOError: [Errno 2] No such file or directory: '/home/yt/.virtualenvs/myvenv/build/SIP/setup.py'
----------------------------------------
Command python setup.py Egg_info failed with error code 1 in /home/yt/.virtualenvs/myvenv/build/SIP
Storing complete log in /home/yt/.pip/pip.log
これまでにSIPをインストールするのを見つけた唯一のレシピはこれです
% python configure.py
% make
% Sudo make install
...しかし、このレシピは、apt-get
(またはPythonモジュールの場合はpip
を介して)すべてのUbuntuインストールを実行するという私のポリシーに反します。
SIPをapt-get(および場合によってはpip)でインストールできる方法はありますか?
ここでの主な問題は、virtualenv
が/usr/include
にそれらのファイルをコピーする代わりに$VIRTUAL_ENV/include
をシンボリックリンクすることを好むように見えることです(私のシステムでvirtualenv
:/usr/local/lib/python2.7/dist-packages/virtualenv.py
のソースコードを検査しながらこれを確認できます)。
簡単な解決策は、シンボリックリンクを削除して、それらのファイルを/usr/include
からコピーするだけです:
$ cd $VIRTUAL_ENV/include/
$ rm python2.7
$ cp -r /usr/include/python2.7/ .
/usr/include/python2.7
に相対的な場所を指すシンボリックリンクがある可能性があるため、これらのファイルをコピーすると破損することに注意してください。
次に、少し変更するだけです。
$ python configure.py --incdir="$VIRTUAL_ENV/include/python2.7"
$ make
$ make install
ところで:シンボリックリンクの代わりにvirtualenv
にそれらのファイルを強制的にコピーさせたい場合は、ソースコードファイルのcopyfile
の定義を変更してください。これはい解決策ですが、動作します。
def copyfile(src, dest, symlink=True):
|-> change this to False