首页 > 解决方案 > 当 pip install -e 成功时,为什么从 github 安装 pip 失败?

问题描述

在https://github.com/Ivancic91/LammpsIO有一个 git repo ,我可以通过克隆和运行以“可编辑”模式安装它pip install -e /path/to/LammpsIO。当我这样做时,我能够import LammpsIO在 python 中成功运行。

但是,当我直接从 github 安装 pip 时pip install git+https://github.com/Ivancic91/LammpsIO.git遇到了问题。实际的pip install命令看起来很成功,并带有通常的成功消息:

Successfully built LammpsIO
Installing collected packages: LammpsIO
Successfully installed LammpsIO-0.0.1

但是当我尝试导入 LamppsIO 时,我得到了ModuleNotFoundError: No module named 'LammpsIO'.

我认为这可能是某种路径错误,但which pip两者which python都指向同一个 conda 环境文件夹。

如果有人需要,这里还有几个输出。

之后pip install git+...

  1. conda list返回:

krb5 1.16.3 h24a3359_1000 conda-
forge lammpsio 0.0.1 pypi_0 pypi
libcurl 7.64.0 h76de61e_0 conda-forge

  1. pip list返回:

kiwisolver 1.0.1
LammpsIO 0.0.1
MarkupSafe 1.1.0

之后pip install -e ...

  1. conda list返回:

krb5 1.16.3 h24a3359_1000 conda-
forge lammpsio 0.0.1 dev_0 libcurl 7.64.0 h76de61e_0 conda-forge

  1. pip list返回:

kiwisolver 1.0.1
LammpsIO 0.0.1 /path/to/LammpsIO/src
MarkupSafe 1.1.0

我猜这与LammpsIO的非正统结构有关,其setup.py文件包含:

package_dir = {'': 'src'},
packages = find_packages(where='src'),

但令我惊讶的是,从 github 安装的 pip 安装失败了pip install -e /path

标签: pythonpipconda

解决方案


你的推理在这里似乎是合理的。我认为您尝试做的事情会奏效。我创建了一个新的 virtualenv 并自己尝试了 github 安装。然后我查看了站点包。我看到的很奇怪。有一个包含基本元数据的“LammpsIO-0.0.1.dist-info”目录,但没有 Lammps 包本身。我做了 find 'find . -iname "*mmps*"' 在站点包中,并且只得到那个信息目录。所以看起来这个包实际上并没有安装。- 当我执行“pip list”时,LammpsIO 确实出现了。

如果您通过下载 zip 并执行“pip install [zip]”来“安装”软件包,您会从 pip 获得相同的输出并最终遇到相同的问题。所以它与直接从github安装无关。它与实际安装软件包而不是将其源链接到您的环境有关。

我的猜测是,Lammps 安装程序刚刚坏了——因为“-e”没有安装任何东西,只是创建了一个链接,这可以解释为什么它可以工作,但常规安装却没有。


推荐阅读