为什么使用pip安装github失败而使用pip install -e成功?

4

有一个 git 仓库位于 https://github.com/Ivancic91/LammpsIO,我可以通过克隆并运行 pip install -e /path/to/LammpsIO 在 "editable" 模式下安装它。当我这样做时,我能够在 python 中成功运行 import LammpsIO

然而,当我使用 pip install git+https://github.com/Ivancic91/LammpsIO.git 直接从 github 进行安装时遇到了问题。实际的 pip install 命令似乎是成功的,并显示了通常的成功提示信息:

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

但是当我尝试导入LammpsIO时,会得到“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 2. “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 2. “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'),

但是我很惊讶pip从github安装失败,而pip install -e /path却可以工作。

1个回答

2
您的推理似乎很有道理。我认为您所尝试的应该是可行的。我创建了一个新的虚拟环境并尝试了github安装。然后我查看了site-packages。我看到的很奇怪。有一个'LammpsIO-0.0.1.dist-info'目录,其中包含基本元数据,但没有Lammps包本身。我在site-packages中执行了“find . -iname“*mmps*””命令,只得到了那个信息目录。因此,似乎包实际上并没有安装。-当我执行“pip list”时,确实会显示LammpsIO。
如果您通过下载zip并执行“pip install [zip]”来“安装”软件包,则会得到与pip相同的输出,并且最终遇到相同的问题。因此,这与直接从github安装无关。它与实际安装软件包有关,而不仅仅是将其源代码链接到您的环境中。
我猜测Lammps安装程序可能出了问题-由于“-e”不会安装任何东西,而只是创建一个链接,这就解释了为什么它可以工作,但常规安装却不能。

对于未来的我或其他任何人,修复项目结构和setup.py文件就可以解决问题。这个pull request起到了关键作用。 - Ben Lindsay
哈!我喜欢!你修复了安装程序的问题。太棒了。它不仅解决了你的问题,也让我知道我的诊断是正确的。我印象深刻。我不认为我会冒险修复别人的工作。我不确定是否错过了什么,安装程序实际上并没有出现故障。我们是一个很好的团队! - CryptoFool
谢谢,但公平起见,尽管这是别人的软件包,但我是提交拉取请求以添加原始损坏安装程序的人 :) 我只是修复了自己的错误工作。 - Ben Lindsay
哦...糟糕!- 好吧,那么很高兴我能帮助你修复拉取请求,哈哈。当我说安装程序出了问题时,我从来没有想到我在谈论你的工作。但是,我说的关于采取主动的话仍然是正确的 :) - CryptoFool

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接