如何pip安装本地python包?

时间:2017-02-27 19:32:39

标签: python pip python-import

问题

我使用

安装了一个名为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位)。该软件包包含两个文件:

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

2 个答案:

答案 0 :(得分:9)

卸载python包然后使用以下命令安装:

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

可能发生的事情是你有多个python安装,并且在你尝试使用另一个安装包时从一个安装运行pip。另见:

答案 1 :(得分:9)

问题集中在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

通过此更改,重新安装软件包后会找到该模块。

这也可能是由两个Python安装引起的(但不是我的情况),而@Mr_and_Mrs_D给出了该案例的答案。