python pip - 从本地目录安装

Posted

技术标签:

【中文标题】python pip - 从本地目录安装【英文标题】:python pip - install from local dir 【发布时间】:2017-05-22 23:59:34 【问题描述】:

我必须下载一个 git python repo 并安装,因为 pypi 版本没有更新。

通常我会这样做:

pip install mypackage
pip install mypackage[redis]

现在我在以下文件夹中克隆了 repo:

/opt/mypackage

那么我如何运行以不使用pypi版本而是使用本地来安装以下内容?

pip --flag /opt/mypackage install mypackage
pip --flag /opt/mypackage install mypackage[redis]

有可用的 pip 标志,但我不知道如何完成:

Commands:
  install                     Install packages.
  uninstall                   Uninstall packages.
  freeze                      Output installed packages in requirements format.
  list                        List installed packages.
  show                        Show information about installed packages.
  search                      Search PyPI for packages.
  wheel                       Build wheels from your requirements.
  help                        Show help for commands.

General Options:
  -h, --help                  Show help.
  --isolated                  Run pip in an isolated mode, ignoring environment variables and user configuration.
  -v, --verbose               Give more output. Option is additive, and can be used up to 3 times.
  -V, --version               Show version and exit.
  -q, --quiet                 Give less output.
  --log <path>                Path to a verbose appending log.
  --proxy <proxy>             Specify a proxy in the form [user:passwd@]proxy.server:port.
  --retries <retries>         Maximum number of retries each connection should attempt (default 5 times).
  --timeout <sec>             Set the socket timeout (default 15 seconds).
  --exists-action <action>    Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup.
  --trusted-host <hostname>   Mark this host as trusted, even though it does not have valid or any HTTPS.
  --cert <path>               Path to alternate CA bundle.
  --client-cert <path>        Path to SSL client certificate, a single file containing the private key and the certificate in PEM format.
  --cache-dir <dir>           Store the cache data in <dir>.
  --no-cache-dir              Disable the cache.
  --disable-pip-version-check

【问题讨论】:

我认为您正在寻找 -e 标志。包目录中的pip install -e . 应该可以工作。 【参考方案1】:

你需要做的就是运行

pip install /opt/mypackage

pip 会在/opt/mypackage 中搜索setup.py,构建一个***,然后安装它。

按照 cmets 和 this answer 中的建议为 pip install 使用 -e 标志的问题在于,只要您想使用该模块,就需要原始源目录保持原位。如果您是从事源代码工作的开发人员,那就太好了,但如果您只是想安装一个包,那就错了。

或者,您甚至根本不需要从 Github 下载 repo。 pip supports 使用各种协议直接从 git repos 安装,包括 HTTP、HTTPS 和 SSH 等。有关示例,请参阅我链接到的文档。

【讨论】:

但我需要安装一个可选的依赖项,例如mypackage[redis] 这是如何解决的?大约有 15 个可选依赖安装,但我只需要 1 个。 @Tampa 据我所知,pip install /opt/mypackage[redis] 应该可以工作。 谢谢!是的 - 当我在 conda 环境中使用-e 时,它安装到了错误的位置(即调用目录)。删除 -e 标志并安装到我的 conda 站点包中【参考方案2】:

您正在使用 pip 寻求安装方面的帮助。您可以使用以下命令找到它:

pip install --help

运行pip install -e /path/to/package 以某种方式安装包,您可以编辑包,当新的导入调用查找它时,它将导入编辑的包代码。这对于包开发非常有用。

【讨论】:

正如我在my answer 中解释的那样,使用-e 安装要求包源永远保持在同一个位置(在这种情况下为/opt/mypackage),这可能是不可取的,甚至是不可能的如果它在/tmp 中。直接将pip指向包含setup.py的目录绝对是这里的路。

以上是关于python pip - 从本地目录安装的主要内容,如果未能解决你的问题,请参考以下文章

pip 不会使用 --user 在本地安装 Python 包

如何从 python 脚本调用 pip 并使其在本地安装到该脚本? [复制]

pip 安装本地 git 存储库

如何给python安装.whl文件

使用 pip 安装 TensorFlow

离线下载pip包进行安装