簡體   English   中英

運行 pip install -e 后出現 python 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'

經過反復試驗,我發現在setup.py中將python文件夾重命名為blitzl1並替換:

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不在同一文件夾中時,在開發模式下安裝包。 請參閱此處了解更多信息。

更清楚一點,如果包名是my_package並且源的結構是:

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

使用package_dir={'my_package':'src'} ,使用pip install -e .安裝包pip install -e . python setup.py develop將引發 OP 報告的錯誤。 緩解這種情況的一種方法是更改​​為package_dir={'':'src'}並將 repo 的結構更改為

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM