linuxBean14.04(39)Pythonのパッケージ管理をPyCharmで行う

前の関連記事:linuxBean14.04(38)LibreOfficeバンドルPythonにパッケージを追加


linuxBeanでPythonのパッケージの管理する方法はいろいろあってどれが一番よいのか迷いましたが、PyCharmで管理するのが一番わかりやすかったです。

PyCharmのsettingsでパッケージをインストールする対象のPythonインタープリターを選択する



PyCharmの起動画面からConfigure→Settings、かプロジェクトを開いた状態からはFile→Settings、を選択します。

Project:pythonからProject Interpreter、を選択します。


Pythonインタープリターは現在4つ入っていることがわかります。

/usr/bin/python2.7と/usr/bin/python3.4はlinuxBean14.04にデフォルトでインストールされていたものです。

/opt/libreoffice4.3/program/pythonはlinuxBean14.04(6)LibreOffice4.3.7とPyCharmの設定でインストールしたLibreOffice4.3のバンドルPythonです。

/usr/bin/python3.3はlinuxBean14.04(38)LibreOfficeバンドルPythonにパッケージを追加でインストールしたものです。

さらにこのマシンにはlinuxBean14.04(25)NetBeans8とLibreOffice5のインストールでインストールしたLibreOffice5.0.0.0beta1のバンドルPythonがあるので、それもこのリストに追加します。


ギアアイコンをクリックしてAdd Local。

/opt/libreofficedev5.0/program/pythonを選択します。


これで5つのPythonインタープリターが揃いました。

私のやりたいことは/opt/libreofficedev5.0/program/pythonにパッケージをインストールしたいことなのですが、このLibreOffice5のバンドルPythonにはパッケージは直接インストールできなかったので、まずは/usr/bin/python3.3に必要なパッケージをインストールして、それをLibreOffice5のバンドルPythonに使わせることにします。

/usr/bin/python3.3を選択します。


すでにインストールされているパッケージの一覧とその最新のバージョン番号が表示されます。

最新のバージョン番号はPyPIを参照にしているようですが、deferとかpython-aptとかすでにインストールされているものの方のバージョン番号の方が大きいのが不思議です。

まず「Install pacakging tools」をクリックしてパッケージのインストールを行うツールのインストールを行います。(PyCharmからpipのインストールを行ってpipのアップグレードをするとTerminalからpipが使えなくなるのでpipのインストールだけはget-pip.pyで行ったほうがよいです。linuxBean14.04(43)動かないpipを再インストール参照。)

pipとsetuptoolsがインストールされました。

Terminalでpip -Vとすると1.5.6が/usr/local/lib/python3.3/dist-packagesにインストールされていることがわかります。
pq@pq-VirtualBox:~$ pip -V
pip 1.5.6 from /usr/local/lib/python3.3/dist-packages/pip-1.5.6-py3.3.egg (python 3.3)
最新版は7.0.3のはずですが、PyCharmはどこからpipをインストールしたのでしょう。

しかし次にやるようにPyCharmからpipを7.0.3にアップグレードするとTerminalからはpipが起動できなくなってしまいました。

アップグレードした情報が/usr/local/bin/pip3.3に反映されていないせいかと思いましたが、1.5.6を7.0.3に書き換えてもだめでした。

PyCharmからのパッケージのインストールには支障はでませんでした。

選択したインタープリターにパッケージを追加する


今回はpycallgraphパッケージを追加インストールします。


インストールアイコンをクリックします。


pycallgraphで検索して選択します。

「Install Package」をクリックするとインストールされます。

/usr/local/binにTerminalから起動できるpycallgraphがインストールされましたが(pipも同じ)、本体はpipと同じ/usr/local/lib/python3.3/dist-packagesにインストールされていました。

インストールされているパッケージをアップグレードする



より新しい版があるパッケージを選択すると右にあるUpgradeボタンが使えるようになります。

一つずつのアップグレードも可能ですが面倒なのですべて選択した状態でアップグレードしてみます。

何回かパスワードの入力を求められるし時間もかかってかえって面倒でした。

pipのアップグレードが完了するとそこでアップグレードが終わってしまいました、、、

pipの設定が完了してからもう一度アップグレードやり直します。

その後もインストール失敗などで何回か止まって数回やり直しました。

結論としては一つずつ必要に迫られたらアップグレードした方がよいです。


最終的にはPyICUとpycurl以外アップグレードできました。

アップグレードできないパッケージは他のファイルを追加でインストールが必要なようです。

PyICUはunicode/utypes.hがpycurlはcurl-configがないといわれました。

Python3.4で同様にしてアップグレードしてみるとpsutilもPhthon.hがないといわれてアップグレードできません。

(2015.7.1追記。psutilのインストールにはpsutil/INSTALL.rst at master · giampaolo/psutil · GitHubにpython-dev(Python3ではpython3-dev)が必要とちゃんと書いてありました。Synapticパッケージマネージャでpython3-devをインストールするとpsutilのアップグレードができました。)

このpsutilはSynapticパッケージマネージャをみるとUbuntuのpython3-psutilパッケージ由来のものようでPycharmからインストールしたパッケージが入る/usr/local/lib/python3.4/dist-packagesではなく、/usr/lib/python3/dist-packagesにありました。

Ubutnuのパッケージ由来のPythonパッケージもpipでアップグレードできるのかどうかまだ未確認です。(2015.7.1追記。アップグレード可能でした。)

LibreOffice5のバンドルPythonにシステムPythonのパッケージを反映させる


linuxBean14.04(38)LibreOfficeバンドルPythonにパッケージを追加でやった通りsites.pthを作って~/.local/lib/python3.3/site-packagesに置きます。

PyCharmを再起動します。


インタープリターに/opt/libreofficedev5.0/program/pythonを選択するとちゃんと/usr/bin/python3.3のパッケージが反映されていますね。
(2015.4.7追記。PyCharm5.0.3からは表示されなくなりました。でもsites.pthの設定は有効です。)

しかし/opt/libreofficedev5.0/program/pythonではインストールはできないので、/usr/bin/python3.3に戻ってインストールします。

同じPython3.3を使っている/opt/libreoffice4.3/program/pythonにも同様に反映されていました。

反映されていないときはPyCharmを再起動すると反映されました。

Terminalのpipコマンドは最後のインストールしたPythonのpipが反映される


/usr/bin/python3.4でも同様にして「Install packaging tools」をインストールしてみました。

インストールされたpipのバージョンはPython3.3と同じ1.5.6でした。
pq@pq-VirtualBox:~$ pip -V
pip 1.5.6 from /usr/local/lib/python3.4/dist-packages/pip-1.5.6-py3.4.egg (python 3.4)
pq@pq-VirtualBox:~$ whereis pip
pip: /usr/local/bin/pip /usr/local/bin/pip3.3 /usr/local/bin/pip3.4
Terminalから起動したpipはpython3.4のものになっています。

whereis pip でコマンドの場所を探してみると/usr/local/bin/pip3.3があり、pip3.3でPython3.3のpipが起動できるようです。(上に書いたように7.0.3にアップグレードしてしまったので未確認ですが多分その通り。)

こうなってもPyCharmのsettingsからのパッケージのインストールに支障はありませんでした。

PyCharmがうまくやってくれているのでしょう。

PyCharmを使う以外にpipをインストールする方法としてはSynapticパッケージマネージャでUbuntuのpython3-pipをインストール、Installation — pip 7.0.3 documentationのget-pip.pyでインストール、といった方法がありますが、Pythonのバージョンの違うpipの使い分けを考えないといけなくて面倒そうなので、GUIで使い分けれるPyCharmが便利だと思います。(上にも書いたようにpipだけはPyCharmでインストールせずにget-pip.pyを使ったほうがよいと思います。linuxBean14.04(43)動かないpipを再インストール参照。)

ちなみに、PyCharmからPython2.7のpipをインストールするとTerminalからpipとするとPython2.7のpipが起動するようになりました。

pip3.4とするとPython3.4のpipが起動できました。

pipはバージョン番号を付与して使い分けできましたが、pycallgraphについてはTerminalから起動するのは最後にインストールしたPythonのものでした。

(2015.6.28追記。/usr/local/bin/pycallgraphのshebangを書き換えると起動するPythonの変更ができました。)

参考にしたサイト


PyPI - the Python Package Index : Python Package Index
Pythonパッケージはここから取得されるようです。

Installation — pip 7.0.3 documentation
get-pip.pyでpipをインストールする方法。

software installation - apt get install vs pip install - Ask Ubuntu
UbuntuでSynapticパッケージマネージャからとpipからPythonパッケージをインストールする違い。

次の関連記事:linuxBean14.04(40)pycallgraphでPythonのコールグラフ:その1

PR

0 件のコメント:

コメントを投稿