[运行pip install-e之后的Python ModuleNotFoundError。

问题描述 投票:2回答:1

我正在尝试在系统范围内编译并安装以下python软件包:https://github.com/mathurinm/BlitzL1/

(请注意,模块的init.py位于名为python的文件夹中]

所以我在仓库的根部运行

pip install -e .

我得到:

zongo@zongo-HP-EliteBook-840-G3:~/workspace/BlitzL1$ pip install -e .
Obtaining file:///home/zongo/workspace/BlitzL1
Installing collected packages: blitzl1
  Running setup.py develop for blitzl1
Successfully installed blitzl1

zongo@zongo-HP-EliteBook-840-G3:~/workspace/BlitzL1$ ipython
Python 3.6.6 | packaged by conda-forge | (default, Jul 26 2018, 09:53:17) 
Type 'copyright', 'credits' or 'license' for more information
IPython 7.0.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import blitzl1                                                                               
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-1-8bb5a22c28e9> in <module>
----> 1 import blitzl1

ModuleNotFoundError: No module named 'blitzl1'

经过反复试验,我发现将python文件夹重命名为blitzl1并在setup.py中进行了替换:

package_dir = {"blitzl1": "python"},

作者

package_dir = {"blitzl1": "blitzl1"},

使导入包成为可能。为什么第一个不起作用?

顺便说一句:

zongo@zongo-HP-EliteBook-840-G3:~/workspace/BlitzL1$ which pip
/home/zongo/anaconda3/bin/pip
python pip distutils
1个回答
0
投票

这是由于pip中长期存在的问题,即当软件包目录与setup.py不在同一文件夹中时,以开发模式安装软件包。有关更多信息,请参见here

为清楚起见,如果程序包名称为my_package并且源的结构为:

|- setup.py
|- src
  |- __init__.py
  |- ...

使用package_dir={'my_package':'src'},用pip install -e .python setup.py develop安装软件包将引发OP报告的错误。减轻这种情况的一种方法是更改​​为package_dir={'':'src'}并将存储库的结构更改为

|- setup.py
|- src
  |- mypackage
     |- __init__.py
     |- ...
© www.soinside.com 2019 - 2024. All rights reserved.