私はいくつかのプロジェクト間で共有するためにアプリケーションをパッケージ化したいと思います。 私のsetup.pyは次のようになります。distutilsで配布された私自身のモジュールをインポートできません
# -*- coding: utf-8 -*-
from distutils.core import setup
setup(
name='foo_bar',
version='1.0',
py_modules=['foo_bar'],
install_requires=[
'bitstring==3.1.5',
'pytz==2016.4',
'wheel==0.24.0', ]
)
その後、私は私が私のfoo_barはアプリケーションを使用してトラブルを抱えている私
用tar.gzファイルを作成するコマンド
python setup.py sdist
を実行します。私はピップを経由して別のvirtualenvの中にそれをインストールしてい
pip install dist/foo_bar.tar.gz
と私はPythonのコンソールで、このモジュールをインポートしようとすると、PIP凍結の出力は、それが
foo-bar==1.0
bitstring==3.1.5
pytz==2016.4
wheel==0.24.0
にインストールされていることを示唆している
import foo_bar
私は得るImportError: No module named 'foo_bar'
私は行方不明ですか?
編集:
foo_bar
├── dist
│ └── foo_bar-1.0.tar.gz
├── __init__.py
├── MANIFEST
├── bar.py
├── requirements.txt
├── setup.py
'' python setup.py install''を試しましたか?ディレクトリ構造を教えてください。あなたはモジュールをインポートしようとしているときに同じvirtualenvにいますか?なぜあなたは '' packages''ではなく '' py_modules''を使っていますか?それははるかに柔軟です... – ziky
@ziky私はディレクトリ構造を含めるために自分の投稿を更新しました。別のvirtualenvを使用していますが、そこにfoo_barがインストールされています。 TBH、私は 'パッケージ'オプションを聞いていない、py_moduleの代わりにそれを使用することができます違いを作る? – mateuszb
あなたは '' foo_bar''をインポートしようとしていますが、あなたのパッケージには '' foo_bar.py''はありません!その名前に '' bar.py''の名前を変更してみてください。しかし、私はこの方法でパッケージを使用したことはありません。通常は、 '' setup.py''と同じレベルにパッケージ( '' __init __。py''ファイルでディレクトリ)を作成します。つまり、プロジェクト内に別の '' foo_bar''ディレクトリを作成すると、 '' bar.py''を配置します。そして '' import foo_bar.bar''のようにインポートします。 – ziky