pip bundleでpythonパッケージを固めてみる

アプリケーションのインストーラー用にpythonパッケージを固めてみます。

一度固めてしまえば、固めたものからインストールできるようになるので、

たとえばオフライン環境でも、pythonパッケージをインストールすることができます。

#インストール済みのパッケージをリスト化


pip freeze > packages.txt

#これにgit から直接pip installしている、下記をpackages.txtに追記


git+git://github.com/toastdriven/django-haystack.git@4e77504f6dad61fd9f2bed427eabdd3f8c0dfa8d#egg=django-haystack

#パッケージを固める(バンドル)


pip bundle -r packages.txt packages.pybundle

実行してみたところ、

下記の様なエラーが出てうまくいきません。


Putting temporary build files in /Users/hoge/.virtualenvs/mw_python/build-bundle4 and source/develop files in /Users/hoge/.virtualenvs/mw_python/src-bundle
Downloading/unpacking django-haystack from git+git://github.com/toastdriven/django-haystack.git@4e77504f6dad61fd9f2bed427eabdd3f8c0dfa8d (from -r base.txt (line 10))
Cloning git://github.com/toastdriven/django-haystack.git (to 4e77504f6dad61fd9f2bed427eabdd3f8c0dfa8d) to /Users/hoge/.virtualenvs/mw_python/build-bundle4/django-haystack
Could not find a tag or branch '4e77504f6dad61fd9f2bed427eabdd3f8c0dfa8d', assuming commit.
Running setup.py egg_info for package django-haystack

Running setup.py egg_info for package django-haystack

Exception:
Traceback (most recent call last):
File "/Users/hoge/.virtualenvs/mw_python/lib/python2.7/site-packages/pip-1.0.2-py2.7.egg/pip/basecommand.py", line 126, in main
self.run(options, args)
File "/Users/hoge/.virtualenvs/mw_python/lib/python2.7/site-packages/pip-1.0.2-py2.7.egg/pip/commands/bundle.py", line 29, in run
requirement_set = super(BundleCommand, self).run(options, args)
File "/Users/hoge/.virtualenvs/mw_python/lib/python2.7/site-packages/pip-1.0.2-py2.7.egg/pip/commands/install.py", line 223, in run
requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
File "/Users/hoge/.virtualenvs/mw_python/lib/python2.7/site-packages/pip-1.0.2-py2.7.egg/pip/req.py", line 994, in prepare_files
self.copy_to_build_dir(req_to_install)
File "/Users/hoge/.virtualenvs/mw_python/lib/python2.7/site-packages/pip-1.0.2-py2.7.egg/pip/req.py", line 1065, in copy_to_build_dir
copytree(req_to_install.source_dir, dest)
File "/Users/hoge/.virtualenvs/mw_python/lib/python2.7/site-packages/pip-1.0.2-py2.7.egg/pip/backwardcompat.py", line 104, in copytree
shutil.copytree(src, dst)
File "/Users/hoge/.pythonbrew/pythons/Python-2.7.2/lib/python2.7/shutil.py", line 174, in copytree
os.makedirs(dst)
File "/Users/hoge/.virtualenvs/mw_python/lib/python2.7/os.py", line 157, in makedirs
mkdir(name, mode)
OSError: [Errno 17] File exists: '/Users/hoge/.virtualenvs/mw_python/build-bundle/django-haystack'

Storing complete log in /Users/hoge/.pip/pip.log

調べてみるとどうやらeggのモジュールは固められない模様

gitから直接pip install しているhaystackを pip freezeすると

django-haystack==2.0.0-alpha

として入っていますが、試しに、2.0.0、2.0.0-alpha、2.0.0-betaで

packages.txt内で指定しても、そんなバージョン無いよと言われてはやはりはいりませんでした。。

 

 

最終的には、

別途git cloneしてきたものを、個別に固める(バンドル)ことにしました。

#git でcloneする。


git clone https://github.com/toastdriven/django-haystack.git

#cloneしたディレクトリに移動


cd django-haystack

#採用するリビジョンに切り替える。


git checkout 4e77504f6dad61fd9f2bed427eabdd3f8c0dfa8d

#個別に固める


cd ../

pip bundle haystack.pybundle -e django-haystack

 

■参考にさせて頂いたサイト

http://d.hatena.ne.jp/rudi/20110107/1294409385

The following two tabs change content below.

ロゴスウェア

ロゴスウェア株式会社は、インターネットや情報技術を使って学習に革新的進化をもたらす製品を開発することを目標に、2001年7月に設立されたテクノロジー系ベンチャー企業です。

Comments are closed.