

rubyではgemfileでプロジェクトごとに必要なパッケージを管理できますが、  
pythonではどのようにすれば良いのでしょうか。

ちなみにdjangoを使った開発を想定しています。


CC BY-SA 3.0
2015-04-04T07:00:00.587
8754
2015-04-05T13:43:22.723
9149
question
python django
pythonのパッケージ管理ツールは何を使えばよいですか?


Python 3.4からデフォルトで付属するようになった`pip`はどうでしょうか？


CC BY-SA 3.0
2015-04-04T07:03:19.097
8755
2015-04-04T07:03:19.097
845
8754
answer


「プロジェクトごと」とあるので, おそらくプロジェクトごとに異なるライブラリを使う想定で回答します.

virtualenv という Python のバージョンや依存ライブラリが異なる複数の環境を扱えるツールがあります.  
またこれをラップした virtualenvwrapper というものもあります.

これらのツールでそのプロジェクト専用の環境を作り, setuptools (easy_install コマンド) もしくは pip
でその個別の環境に依存ライブラリのパッケージをインストールすることになります.


CC BY-SA 3.0
2015-04-05T09:29:24.063
8787
2015-04-05T09:29:24.063
2281
8754
answer


gemfile相当というと、pipのrequirements.txt が使えるのではないかと思います。

[code]

    pip freeze > requirements.txt
    
[/code]

で現在の環境の状態が収集でき

[code]

    pip install -r requirements.txt
    
[/code]

で別の環境に同じパッケージをインストールすることができます。

# 使用例

例えば、virtualenvであるディレクトリにインストールしたものと同じバージョンを別のディレクトリに適用したい場合

# 元となる環境の作成

Windows , python 2.7 の場合です。  
Linuxなどでは `scripts\activate` コマンドを `. bin/activate` としてください。あとは同様にできると思います。

virtualenvでマシンの環境を汚さないように作っています。  
virtualenv未導入の場合は `pip install virtualenv` などとしてインストールしておいてください。

ログは大分省略しています。  
djangoは今日時点ではバージョン指定しなければ1.8がインストールされますが、あえて1.7を指定しています。

[code]

    D:\Work\so8754>virtualenv yyy
    New python executable in yyy\Scripts\python.exe
    Installing setuptools, pip...done.
    
    D:\Work\so8754>cd yyy
    D:\Work\so8754\yyy>Scripts\activate
    
    (yyy) D:\Work\so8754\yyy>pip install django==1.7
    Successfully installed django-1.7
    
    (yyy) D:\Work\so8754\yyy>pip install pillow
    Successfully installed pillow-2.8.1
    
    (yyy) D:\Work\so8754\yyy>pip freeze > requirements.txt
    (yyy) D:\Work\so8754\yyy>deactivate
    D:\Work\so8754\yyy>
    
[/code]

requirements.txt の中身は以下の様になっています。

[code]

    Django==1.7
    Pillow==2.8.1
    
[/code]

# 別の環境に適用

このファイルを使って別のディレクトリに同じパッケージをインストールします。

[code]

    D:\Work\so8754\yyy>cd ..
    D:\Work\so8754>virtualenv zzz
    D:\Work\so8754>cd zzz
    D:\Work\so8754\zzz>scripts\activate
    (zzz) D:\Work\so8754\zzz>copy ..\yyy\requirements.txt .
            1 個のファイルをコピーしました。
    
    (zzz) D:\Work\so8754\zzz>pip install -r requirements.txt
    Collecting Django==1.7 (from -r requirements.txt (line 1))
      Using cached Django-1.7-py2.py3-none-any.whl
    Collecting Pillow==2.8.1 (from -r requirements.txt (line 2))
      Using cached Pillow-2.8.1-cp27-none-win32.whl
    Installing collected packages: Pillow, Django
    
    
    Successfully installed Django-1.7 Pillow-2.8.1
    (zzz) D:\Work\so8754\zzz>
    
[/code]

djangoが1.7が入っているのがわかると思います。

# パッケージバージョンの変更

また、別バージョンに更新したい場合はまず zzz\requirements.txt を以下の様に書き換えます

[code]

    Django
    Pillow==2.8.1
    
[/code]

Djangoのバージョンを指定しなかったので、最新版を指定します( 用途に応じて `Django==1.8` などとしても問題ありません )。  
次のコマンドを実行します。

[code]

    (zzz) D:\Work\so8754\zzz>pip install --upgrade -r requirements.txt
    Requirement already up-to-date: Pillow==2.8.1 ...
    ...
          Successfully uninstalled Django-1.7
    Successfully installed Django-1.8
    
[/code]

Django 1.7 がアンインストールされて、1.8 がインストールされたことがわかると思います。

virtualenvwrapperを使う場合は、`mkvirtualenv 環境名 -r
requirements.txt`などとして作成と同時にインストールもできたと思います。


CC BY-SA 3.0
2015-04-05T12:33:09.563
8791
2015-04-05T12:33:09.563
728
8754
answer


[Pythonプロフェッショナルプログラミング第2版](http://www.amazon.co.jp/gp/product/479804315X?ie=UTF8&camp=1207&creative=8411&creativeASIN=479804315X&linkCode=shr&tag=freiaweb-22&=books&qid=1428241288&sr=1-1
"Pythonプロフェッショナルプログラミング第2版") 3章と9章にその辺りの話を詳しくまとめました。基本的には flied onion
さんの書かれたとおりです。


CC BY-SA 3.0
2015-04-05T13:43:22.723
8794
2015-04-05T13:43:22.723
806
8754
answer