2017-02-27 100 views
2

問題如何pip安裝本地python軟件包?

我安裝了名爲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' 

令人困惑的是,當我運行pip list時,包credentials被列爲成功安裝:

... 
credentials (1.0.0, c:\users\worker\src\clockwork\lib\credentials) 
... 

如何安裝本地軟件包以便導入?

背景

我使用Python 3.4(32位)。該軟件包包含兩個文件:

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

+0

您是否安裝了多個版本的Python? – BrenBarn

+1

它在我看來像你的'setup.py'是*太*短。請參閱[文檔]中的示例(https://docs.python.org/2/distutils/introduction.html#distutils-simple-example)(和[another](https://docs.python.org/3 /distutils/setupscript.html))。您沒有指定要安裝的任何模塊或軟件包。 – BrenBarn

+0

@BrenBarn您的評論是答案的一半。另一半是爲包創建一個子目錄,並在父目錄中保留setup.py。如果您將它作爲答案發布,那麼我會接受它。 – expz

回答

2

問題上setup.py中心。它需要聲明一個包:

from distutils.core import setup 

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

但這setup.py必須在credentials包的父目錄,所以最後的目錄結構:

隨着這一變化,在重新安裝軟件包後找到模塊。

這也可能是由兩個Python安裝引起的(但不是我的情況),@Mr_and_Mrs_D給出了這種情況的答案。