Skip to content
This repository was archived by the owner on Mar 20, 2026. It is now read-only.
This repository was archived by the owner on Mar 20, 2026. It is now read-only.

Old commit broke lots of imports #4838

@franznowak

Description

@franznowak

🐛 Bug

f8b795f moved metrics.py from \fairseq to \fairseq\logging. This means that the imports in 35 files are broken because they still use from fairseq import metrics. However, it does not necessarily fail if you are running the import from within the fairseq directory.

To Reproduce

Steps to reproduce the behavior:

  1. From outsite the fairseq directory, run cmd python -c 'from fairseq import metrics'
  2. See error:
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: cannot import name 'metrics' from 'fairseq' (unknown location)

I first noticed this issue when trying to run step on the example from https://github.com/microsoft/unilm/tree/master/deltalm which uses fairseq:

  1. Run the following from the deltalm directory:
bash examples/binary_iwslt14.sh \      
     /tmp/iwslt14/iwslt14.tokenized.de-en \
     /tmp/iwslt14/iwslt14.spm \
     /path/to/checkpoint/spm.model
  1. See error:
\Traceback (most recent call last):
  File "/Users/franz/src/unilm/deltalm/preprocess.py", line 1, in <module>
    import deltalm
  File "/Users/franz/src/unilm/deltalm/deltalm/__init__.py", line 1, in <module>
    import deltalm.models
  File "/Users/franz/src/unilm/deltalm/deltalm/models/__init__.py", line 5, in <module>
    from fairseq.models import MODEL_REGISTRY, ARCH_MODEL_INV_REGISTRY
  File "/Users/franz/src/unilm/deltalm/fairseq/fairseq/models/__init__.py", line 236, in <module>
    import_models(models_dir, "fairseq.models")
  File "/Users/franz/src/unilm/deltalm/fairseq/fairseq/models/__init__.py", line 218, in import_models
    importlib.import_module(namespace + "." + model_name)
  File "/Users/franz/opt/anaconda3/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "/Users/franz/src/unilm/deltalm/fairseq/fairseq/models/speech_to_text/__init__.py", line 9, in <module>
    from .xm_transformer import * # noqa
  File "/Users/franz/src/unilm/deltalm/fairseq/fairseq/models/speech_to_text/xm_transformer.py", line 15, in <module>
    from fairseq.models.wav2vec import Wav2VecEncoder
  File "/Users/franz/src/unilm/deltalm/fairseq/fairseq/models/wav2vec/__init__.py", line 6, in <module>
    from .wav2vec import *  # noqa
  File "/Users/franz/src/unilm/deltalm/fairseq/fairseq/models/wav2vec/wav2vec.py", line 25, in <module>
    from fairseq.tasks import FairseqTask
  File "/Users/franz/src/unilm/deltalm/fairseq/fairseq/tasks/__init__.py", line 15, in <module>
    from .fairseq_task import FairseqTask, LegacyFairseqTask  # noqa
  File "/Users/franz/src/unilm/deltalm/fairseq/fairseq/tasks/fairseq_task.py", line 13, in <module>
    from fairseq.logging import metrics, search, tokenizer, utils
ImportError: cannot import name 'search' from 'fairseq.logging' (/Users/franz/src/unilm/deltalm/fairseq/fairseq/logging/__init__.py)
(base) franz@student-net-ox-dock-1-a-415 deltalm % bash examples/binary_iwslt14.sh \
     /tmp/iwslt14/iwslt14.tokenized.de-en \
     /tmp/iwslt14/iwslt14.spm \
     /path/to/checkpoint/spm.model

Code sample

from fairseq import metrics

Expected behavior

Import should just work.

Environment

  • fairseq Version (e.g., 1.0 or main): 1.0 or main
  • OS (e.g., Linux): macOS Monterey 12.6
  • How you installed fairseq (pip, source): pip install --editable fairseq/
  • Python version: 3.9
  • Any other relevant information: weirdly, when installing tensorboardX and running from within fairseq directory, the first set of repro steps does not reproduce the issue (the second one still does).

Additional context

Files with faulty imports:

./tests/test_metrics.py:9:from fairseq import metrics
./fairseq/model_parallel/criterions/vocab_parallel_cross_entropy.py:8:from fairseq import metrics, utils
./fairseq/criterions/fairseq_criterion.py:9:from fairseq import metrics, utils
./fairseq/criterions/cross_entropy.py:10:from fairseq import metrics, utils
./fairseq/criterions/fastspeech2_loss.py:14:from fairseq import metrics, utils
./fairseq/criterions/label_smoothed_cross_entropy_with_rdrop.py:11:from fairseq import metrics, utils
./fairseq/criterions/ctc.py:16:from fairseq import metrics, utils
./fairseq/criterions/adaptive_loss.py:10:from fairseq import metrics, utils
./fairseq/criterions/model_criterion.py:12:from fairseq import metrics, utils
./fairseq/criterions/wav2vec_criterion.py:12:from fairseq import metrics, utils
./fairseq/criterions/label_smoothed_cross_entropy_with_ctc.py:12:from fairseq import metrics, utils
./fairseq/criterions/legacy_masked_lm.py:10:from fairseq import metrics, utils
./fairseq/criterions/nat_loss.py:10:from fairseq import metrics, utils
./fairseq/criterions/label_smoothed_cross_entropy_latency_augmented.py:8:from fairseq import metrics, utils
./fairseq/criterions/label_smoothed_cross_entropy.py:12:from fairseq import metrics, utils
./fairseq/criterions/tacotron2_loss.py:17:from fairseq import metrics, utils
./fairseq/criterions/hubert_criterion.py:13:from fairseq import metrics, utils
./fairseq/criterions/speech_ulm_criterion.py:10:from fairseq import metrics
./fairseq/criterions/sentence_prediction.py:12:from fairseq import metrics
./fairseq/criterions/label_smoothed_cross_entropy_with_alignment.py:8:from fairseq import metrics, utils
./fairseq/criterions/speech_to_speech_criterion.py:12:from fairseq import metrics, utils
./fairseq/criterions/masked_lm.py:11:from fairseq import metrics, modules, utils
./fairseq/criterions/sentence_ranking.py:10:from fairseq import metrics, utils
./fairseq/tasks/fairseq_task.py
./fairseq/tasks/multilingual_translation.py
./fairseq/tasks/online_backtranslation.py
./fairseq/tasks/translation.py
./examples/translation_moe/translation_moe_src/translation_moe.py:10:from fairseq import metrics, utils
./examples/adaptive_span/adaptive_span_loss.py:10:from fairseq import metrics, utils
./examples/MMPT/mmpt/losses/fairseqmmloss.py:11:from fairseq import metrics
./examples/rxf/rxf_src/label_smoothed_cross_entropy_r3f.py:10:from fairseq import metrics, utils
./examples/speech_text_joint_to_text/criterions/text_guide_cross_entropy_acc.py:11:from fairseq import metrics, utils
./examples/speech_text_joint_to_text/criterions/multi_modality_compound.py:8:from fairseq import metrics, utils
./examples/discriminative_reranking_nmt/tasks/discriminative_reranking_task.py:15:from fairseq import metrics
./examples/discriminative_reranking_nmt/criterions/discriminative_reranking_criterion.py:12:from fairseq import metrics, utils

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions