web-dev-qa-db-ja.com

ローカルpythonパッケージをpipインストールする方法?

質問

を使用して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を変更する必要がないようにパッケージを適切にインストールする方法です。

14
expz

問題の中心はsetup.py。パッケージを宣言する必要があります:

from distutils.core import setup

setup(name='credentials', version='1.0.0', packages=['credentials'])

でもこれは setup.pycredentialsパッケージの親ディレクトリにある必要があるため、最終的にディレクトリ構造は次のようになります。

...\credentials\setup.py
...\credentials\credentials\__init__.py

この変更により、パッケージの再インストール後にモジュールが見つかります。

これは、2つのPythonインストール(ただし、私の場合はそうではありませんでした)によっても発生する可能性があります。).

11
expz

pythonパッケージをアンインストールしてから、次を使用してインストールします。

python -m pip install -e c:\users\worker\src\clockwork\lib\credentials

おそらく起こっているのは、複数のpythonインストールがあり、あるインストールからpipが実行されている間に、別のインストールからパッケージを使用しようとしていることです。

13
Mr_and_Mrs_D