AnswerDotAI / AnswerDotAI/nbdev

import_module fails when running nbdev_update in new nbdev project.

Aperta
#1,238 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Jupyter Notebook
Stelle
5.3k
Fork
514
Merge medio
2g 30m
PR unite (30g)
8

Descrizione

This is caused when running `nbdev_update` in a new project called nbdev-blog.

```python
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
Cell In[4], line 1
----> 1 midx = import_module(f'{get_config().lib_name}._modidx')

File /usr/lib/python3.10/importlib/__init__.py:126, in import_module(name, package)
124 break
125 level += 1
--> 126 return _bootstrap._gcd_import(name[level:], package, level)

File :1050, in _gcd_import(name, package, level)

File :1027, in _find_and_load(name, import_)

File :992, in _find_and_load_unlocked(name, import_)

File :241, in _call_with_frames_removed(f, *args, **kwds)

File :1050, in _gcd_import(name, package, level)

File :1027, in _find_and_load(name, import_)

File :1004, in _find_and_load_unlocked(name, import_)

ModuleNotFoundError: No module named 'nbdev-blog'
```

Reproduced in REPL:
```python
from importlib import import_module

from nbdev.config import *

cfg = get_config()

midx = import_module(f'{get_config().lib_name}._modidx')
```

This can be fixed in 1 of 2 ways:

1. Change the settings.ini default to change dashes to underscores in the default lib_name
```
### Python library ###
repo = nbdev-blog
lib_name = %(repo)s
```

I fixed this issue locally by changing the above to:
```
### Python library ###
repo = nbdev-blog
lib_name = nbdev_blog
```

2. Change lib_name to lib_path in the sync.

This line: https://github.com/fastai/nbdev/blob/46d05d40fb8bfd1f6466f3daabc1fcf300a73fde/nbdev/sync.py#L33

Could be changed to:

`midx = import_module(f'{get_config().lib_path}._modidx')`

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia da nbdev/sync.py alla riga 33 e analizza come viene usato get_config().lib_name per importare _modidx. Riproduci il malfunzionamento con un progetto il cui nome del repository contiene un trattino, quindi confronta le alternative relative a sync.py e settings.ini descritte qui. Il lavoro è completato quando nbdev_update importa correttamente il modulo generato in un nuovo progetto nbdev-blog.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
jupyter, python
Ambito
tooling
Tipo di issue
Bug
Difficoltà
2/5
Tempo stimato
1-3 ore
Stato di attività
Ferma
Chiarezza
Specificata chiaramente
Idoneità per principianti
52/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.