2016-02-01 3 views
5

私が見つけた、複数のソース(https://docs.python.org/3/distutils/sourcedist.html#specifying-the-files-to-distributehttp://blog.ionelmc.ro/2014/05/25/python-packaging/http://blog.ionelmc.ro/2014/06/25/python-packaging-pitfalls/)。私のパッケージ内のファイルは、このように見て省かファイル(うまくいけば無関係)の残りの部分とsetup.pyはどこでvirtualenvの中にデータファイルをインストールしますか? Pythonパッケージ内のデータファイルを配布する方法はsetuptoolsのの<code>include_package_data</code>オプションと<code>MANIFEST.in</code>を使用することであることを示唆している

setup.py

setup( # ... include_package_data = True, # ... 、などです。

MANIFEST.IN

graft testdata include ChangeLog include README.rst include COPYING include COPYING.LESSER include tox.ini

私はsetup.py installを実行したり、virtualenvの中にピップを使用する場合、私は、Pythonのソースファイル自体で終わるが、どこにもtestdata/せずに私はそれを見つけることができます。私はこれが私のパッケージングのエラーだと思っていましたが、同様のレイアウトの別のパッケージをつかむと、データファイルも見つけられませんでした。サンプルパッケージhttps://github.com/ionelmc/python-namelessのリポジトリをクローン化し、setup.py installを使用してインストールすると、パッケージはディレクトリlib/python3.4/site-packages/nameless-0.1.0-py3.4.egg/nameless/にインストールされます。しかし、私はvirtualenvのどこにでもデータファイルやテストを見つけることができません。彼らはどこで終わるはずですか?これはどうやって動くのだろう?

この質問をする私の動機は、プロジェクトの別のコントリビュータがデータファイルを必要とするテストをpipインストールから実行したいということです。これは最初の正しいアプローチですか?

+0

include_package_data = Trueを指定する必要があります信じていません。同様の質問は私の[回答](http://stackoverflow.com/a/34788912/3626079)を参照してください。 – ziky

答えて

0

私の理解では、あなただけのはずです

include testdata

の代わりgraftそれをINGのことである - 正直に言うと、私は実際にgraftが何をするかわかりません。

また、私はあなたのデータファイルを発見するために、 `pkg_resources`を使用して、すべての

+0

'include'には、ディレクトリではなくパターンに一致するファイルが含まれます。私の知る限り、これは従来のドキュメント(https://docs.python.org/3/distutils/commandref.html)でのみ説明されています。 (もしそれが非旧式のドキュメントで説明されていれば、私はどこにいるのか分かりません) 'graft'はディレクトリ全体を含んでいます。私のMANIFEST.inとサンプルパッケージの両方で、個々のファイルに 'include'が使われていて、virtualenvでそれらのファイルを見つけることができません。私は 'testdata /'にも 'recursive-include'を試しましたが、それもうまくいきません。 – ceridwen

+0

私は昨日同様の問題に直面していました。以前私は '/ etc/nepi'に手動でCOPYINGとLICENSEを保存していましたが、それはvirtualenvで壊れていました。今すぐ([git repo here](http://git.onelab.eu/?p=nepi.git;a=tree)を参照)、うまく動作します。あなたが含まれているファイルのいずれかが表示されない場合、私は何かが間違っていると思われる。また、私は 'include 'がディレクトリとともに使われているが、それがうまくいくという証拠はないという例を見てきました。私はこれに関する文書が正確にはっきりしていないことに同意します:) – parmentelat

関連する問題