質問
を使用してcredentials
というローカルパッケージをインストールしました
pip install -e c:\users\worker\src\clockwork\lib\credentials
しかし、兄弟ディレクトリからパッケージをインポートしようとすると、ImporErrorで失敗します。
cd c:\users\worker\src\clockwork\bank
python -c "import credentials"
...
ImportError: No module named 'credentials'
紛らわしいことに、パッケージcredentials
は、pip list
:
...
credentials (1.0.0, c:\users\worker\src\clockwork\lib\credentials)
...
ローカルパッケージをインストールしてインポートできるようにするにはどうすればよいですか?
背景
私はPython 3.4(32ビット)を使用しています。パッケージには2つのファイルが含まれています。
credentials\__init__.py
credentials\setup.py
__init__.py
ファイルは、単一の関数を定義します。 setup.py
ファイルは短い:
from distutils.core import setup
setup(name='credentials', version='1.0.0')
回避策
現在、パッケージを含むディレクトリ(c:\users\worker\src\clockwork\lib
)回避策としてPATH
変数に。しかし、私の質問は、PATH
を変更する必要がないようにパッケージを適切にインストールする方法です。
問題の中心はsetup.py
。パッケージを宣言する必要があります:
from distutils.core import setup
setup(name='credentials', version='1.0.0', packages=['credentials'])
でもこれは setup.py
はcredentials
パッケージの親ディレクトリにある必要があるため、最終的にディレクトリ構造は次のようになります。
...\credentials\setup.py
...\credentials\credentials\__init__.py
この変更により、パッケージの再インストール後にモジュールが見つかります。
これは、2つのPythonインストール(ただし、私の場合はそうではありませんでした)によっても発生する可能性があります。).
pythonパッケージをアンインストールしてから、次を使用してインストールします。
python -m pip install -e c:\users\worker\src\clockwork\lib\credentials
おそらく起こっているのは、複数のpythonインストールがあり、あるインストールからpipが実行されている間に、別のインストールからパッケージを使用しようとしていることです。