如何使用 pip 安装来自 github 的 egg 文件,而不是在当前目录中,而是在 conda env 目录中?

Posted

技术标签:

【中文标题】如何使用 pip 安装来自 github 的 egg 文件,而不是在当前目录中,而是在 conda env 目录中?【英文标题】:How to have egg files from github install with pip not in current directory but in the conda env directory? 【发布时间】:2018-12-02 09:18:04 【问题描述】:

我正在使用 conda、pip 和 yml 配置文件创建一个 python 环境,首先使用:

conda env create -f test.yml -n test_pip

然后

conda env update -f test.yml -n test_pip

使用以下 .yml 文件(仅用于测试):

channels:
- defaults
- conda-forge
dependencies:
- python=3.5
- numpy
- scipy
- scikit-learn
- jupyter
- ipykernel
- requests
- pandas
- seaborn
- click
- openpyxl
- matplotlib
- pip:
  - watermark
  - "-e git+https://github.com/slundberg/shap#egg=shap"
  - pytest
  - sklearn
  - autopep8

它工作正常,但 egg 文件安装在当前目录“src/shap/”中,而我希望它与 conda 或 pip 安装的所有其他 python 包一起安装:

/xxx/anaconda/envs/test_pip

我拿了这个测试 github 目录(我知道我可以直接用 pip install 安装它)但我想稍后使用我自己的 git 目录。

为什么这里没有安装egg?

/xxx/anaconda/envs/test_pip/lib/python3.5/site-packages/

这是我找到 pip 和 conda 安装的其他软件包的地方。

有什么理由吗?我怎样才能改变它?

我正在使用:

anaconda 4.2.0
conda 4.5.1
pip 9.0.3

【问题讨论】:

【参考方案1】:

我在您的配置中没有看到任何鸡蛋 文件。如果通过“蛋文件”你 意味着来自 github 的 git 存储库,而不是罪魁祸首是选项 -e — 它 在"editable mode" 中安装包。你可能不需要它,所以 配置部分应如下所示:

- pip:
    …
  - "git+https://github.com/slundberg/shap#egg=shap"
    …

PS。 #egg=shap 不代表有egg文件,只是这样 在 VCS(在您的情况下为 git)URL 中为 pip 命名包,以便 pip 在克隆存储库之前解析包名称和版本。

【讨论】:

我对“#egg=”感到困惑,但你说得对,我只想安装一个 git 存储库。 ***.com/questions/2051192/what-is-a-python-egg。对于这个 shap got 存储库,它就像一个魅力,也应该适用于我自己的 git 存储库。我不知道我为什么要使用“-e”,这是造成问题的原因。

以上是关于如何使用 pip 安装来自 github 的 egg 文件,而不是在当前目录中,而是在 conda env 目录中?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 github 上的 master 分支安装 pip 模块? [复制]

Pip 可以在安装时安装 setup.py 中未指定的依赖项吗?

来自私人 github 存储库的 Pip install wheel

如何使用 pip-console 安装库?

如何 pip 卸载使用 git 项目 URL 安装的包?

使用 pip 安装私有 github 存储库时遇到问题