2016-05-04 72 views
3

私はPythonモジュールmodule.pydを持っています。これは、pythonインストールフォルダのサイトパッケージに手作業で置くとかなりうまく動作します。* .pydファイルをPythonパッケージに組み込む

解決策をクラウド環境にアップロードするときに問題が発生します.buildpackは、すべてのモジュールをパッケージとしてpip install moduleと一緒に渡すように要求します。私は単純な__init__.pyファイルのフォルダを作成して、module.pydのすべてをインポートして、自分のモジュールがフォルダのように扱われるようにしました。

その後、私は私自身のモジュールをアップロードする方法http://peterdowns.com/posts/first-time-with-pypi.htmlここで読むと、私は成功しましたが、私は私のモジュールをインストールするとき、module.pydファイルがコピーされません。私はまた、リポジトリpip install git+repositoryによって直接インストールしようとしましたが、同じことが起こりました。私は私がMANIFEST.inファイルに* .pydファイルをコピーしたい明示的に言っているかもしれないことをここhttps://docs.python.org/2/distutils/sourcedist.html#specifying-the-files-to-distributeを読んだことがある

、私はそれを行っているが、それはまだ動作していないようです。

私は現在、私はみんなが

+0

あまりは、残念ながら、理にかなっています。なぜあなたは実際の.pyファイルを配布したくないのですか?自分のコードであれば、プロジェクト自体ではなく、サイトパッケージに入れる必要があるのはなぜですか? –

+0

@ daniel-roseman実際に私はこのモジュールのpyファイルを持っていません(これは私が考えるC++のコンパイルです)。私はただそれをディストリビューションまたは少なくともリポジトリに配置したいので、クラウド環境のビルパックがそれにアクセスできるようにします。しかし、一度モジュールをインストールすると、 '__init__.py'ファイルはダウロードされますが、pydファイルはダウロードされません。私はすでにソリューションと一緒にアップロードしようとしましたが、なぜ動作しないのかわかりません –

答えて

2

ちょうどMANIFEST.inを使用する際に役立つ、あなたに感謝dはので、私のpythonに新しいですのpython 2.7.10

を使用して:

recursive-include module *.pyd 

これは、内のすべてのPYDファイルが含まれますディレクトリmodule

あなたのパッケージのレイアウトは、次のようになります。

module/ 
--- __init__.py 
--- _module.pyd 
--- module.py 
MANIFEST.in 
README.rst 
setup.py 

とホイールとWin32のインストーラを構築するときMANIFEST.inを使用して強制するためにあなたのsetup.pysetup()include_package_data=Trueを追加することを忘れないでください(他MANIFEST.inのみとなりますソースtarball/zipに使用されます)。 setup()

最小例:本の

README_rst = '' 
with open('README.rst', mode='r', encoding='utf-8') as fd: 
    README_rst = fd.read() 

setup(
    name='module', 
    version='0.0.1', 
    description='Cool short description', 
    author='Author', 
    author_email='[email protected]', 
    url='repo.com', 
    packages=['module'], 
    long_description=README_rst, 
    include_package_data=True, 
    classifiers=[ 
     # Trove classifiers 
     # The full list is here: https://pypi.python.org/pypi?%3Aaction=list_classifiers 
     'Development Status :: 3 - Alpha', 
    ] 
) 
+0

'module.py'と' _module.pyd'をなぜ使用しているのかを詳しく解説できますか(なぜ.pyファイル.pydファイルの名前をアンダースコアで変更します)。 – florisla

+0

@florislaああ、本当に混乱するかもしれませんが、 '_module.pyd'はSWIGによって生成されたC++プログラムのPythonモジュールのインタフェースですので、' _module.pyd'と 'module.py'の間には関係がありません。おそらく、pydファイルの名前を '_core.pyd'に変更するのはあまり混乱しないでしょう。 – gaborous

+0

それでなぜアンダースコアを保持しますか? * .pydファイルをパブリックにしたいのですか? – florisla

関連する問題