python 运行 pip install -e 后出现 ModuleNotFoundError。
python ModuleNotFoundError after running pip install - e .
我正在尝试在系统范围内编译和安装以下 python 软件包:
https://github.com/mathurinm/BlitzL1/
(注意模块的 init.py
位于名为 python
的文件夹内)
所以我 运行,在 repo 的根目录,
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
这是由于 pip
中一个长期存在的问题,当包目录与 setup.py
不在同一个文件夹中时,在开发模式下安装包。有关详细信息,请参阅 here。
更清楚一点,如果包名是my_package
,源的结构是:
|- setup.py
|- src
|- __init__.py
|- ...
with package_dir={'my_package':'src'}
,使用 pip install -e .
或 python setup.py develop
安装软件包将引发 OP 报告的错误。
缓解这种情况的一种方法是更改为 package_dir={'':'src'}
并将 repo 的结构更改为
|- setup.py
|- src
|- mypackage
|- __init__.py
|- ...
我正在尝试在系统范围内编译和安装以下 python 软件包: https://github.com/mathurinm/BlitzL1/
(注意模块的 init.py
位于名为 python
的文件夹内)
所以我 运行,在 repo 的根目录,
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
这是由于 pip
中一个长期存在的问题,当包目录与 setup.py
不在同一个文件夹中时,在开发模式下安装包。有关详细信息,请参阅 here。
更清楚一点,如果包名是my_package
,源的结构是:
|- setup.py
|- src
|- __init__.py
|- ...
with package_dir={'my_package':'src'}
,使用 pip install -e .
或 python setup.py develop
安装软件包将引发 OP 报告的错误。
缓解这种情况的一种方法是更改为 package_dir={'':'src'}
并将 repo 的结构更改为
|- setup.py
|- src
|- mypackage
|- __init__.py
|- ...