examples/seq2seq/__init__.py mutates sys.path
Author: stas00
Pull request: yes

(**edit**: the PR went through a change - i updated the description here).

Fixes part of the issue raised here: https://github.com/huggingface/transformers/pull/7109#issuecomment-693213029

This PR replaces the hack of retrying to import modules via `foo` and if failed via `.foo` depending on where the test is invoked from, so now it's possible to do:
```
pytest ./examples/seq2seq/test_seq2seq_examples.py --collect-only -q
cd examples
pytest ./seq2seq/test_seq2seq_examples.py --collect-only -q
cd seq2seq/
pytest ./test_seq2seq_examples.py --collect-only -q
```
and all the imports just work. (I used `--collect-only -q` just to validate that it works, as it's a fast run)

For scripts invocations work too:
```
python ./examples/seq2seq/run_eval.py -h
cd examples
python ./seq2seq/run_eval.py -h
cd seq2seq/
python ./run_eval.py -h
```

While `conftest.py` worked for tests, it left the scripts broken. So in the 2nd attempt I replaced `conftest.py` with `__init__.py` that does the same and works for both types.

If it's fitting, we can do the same for the rest of the `examples` sub-dirs.

@sshleifer 

Comments:
# [Codecov](https://codecov.io/gh/huggingface/transformers/pull/7194?src=pr&el=h1) Report
> Merging [#7194](https://codecov.io/gh/huggingface/transformers/pull/7194?src=pr&el=desc) into [master](https://codecov.io/gh/huggingface/transformers/commit/4f6e52574248636352a746cfe6cc0b13cf3eb7f9?el=desc) will **increase** coverage by `2.14%`.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/huggingface/transformers/pull/7194/graphs/tree.svg?width=650&height=150&src=pr&token=9qOlN6Hb1c)](https://codecov.io/gh/huggingface/transformers/pull/7194?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master    #7194      +/-   ##
==========================================
+ Coverage   78.63%   80.78%   +2.14%     
==========================================
  Files         174      174              
  Lines       33446    33446              
==========================================
+ Hits        26300    27018     +718     
+ Misses       7146     6428     -718     
```


| [Impacted Files](https://codecov.io/gh/huggingface/transformers/pull/7194?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [src/transformers/modeling\_tf\_funnel.py](https://codecov.io/gh/huggingface/transformers/pull/7194/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ190Zl9mdW5uZWwucHk=) | `18.53% <0.00%> (-75.51%)` | :arrow_down: |
| [src/transformers/modeling\_tf\_bert.py](https://codecov.io/gh/huggingface/transformers/pull/7194/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ190Zl9iZXJ0LnB5) | `69.10% <0.00%> (-29.80%)` | :arrow_down: |
| [src/transformers/activations\_tf.py](https://codecov.io/gh/huggingface/transformers/pull/7194/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9hY3RpdmF0aW9uc190Zi5weQ==) | `54.16% <0.00%> (-20.84%)` | :arrow_down: |
| [src/transformers/modeling\_gpt2.py](https://codecov.io/gh/huggingface/transformers/pull/7194/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ19ncHQyLnB5) | `79.03% <0.00%> (-7.80%)` | :arrow_down: |
| [src/transformers/configuration\_bart.py](https://codecov.io/gh/huggingface/transformers/pull/7194/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9jb25maWd1cmF0aW9uX2JhcnQucHk=) | `90.00% <0.00%> (-4.00%)` | :arrow_down: |
| [src/transformers/modeling\_utils.py](https://codecov.io/gh/huggingface/transformers/pull/7194/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ191dGlscy5weQ==) | `86.87% <0.00%> (-0.36%)` | :arrow_down: |
| [src/transformers/file\_utils.py](https://codecov.io/gh/huggingface/transformers/pull/7194/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9maWxlX3V0aWxzLnB5) | `82.84% <0.00%> (-0.25%)` | :arrow_down: |
| [src/transformers/modeling\_bart.py](https://codecov.io/gh/huggingface/transformers/pull/7194/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ19iYXJ0LnB5) | `94.27% <0.00%> (-0.17%)` | :arrow_down: |
| [src/transformers/modeling\_bert.py](https://codecov.io/gh/huggingface/transformers/pull/7194/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ19iZXJ0LnB5) | `88.28% <0.00%> (ø)` | |
| [src/transformers/tokenization\_utils\_base.py](https://codecov.io/gh/huggingface/transformers/pull/7194/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy90b2tlbml6YXRpb25fdXRpbHNfYmFzZS5weQ==) | `94.04% <0.00%> (+0.13%)` | :arrow_up: |
| ... and [10 more](https://codecov.io/gh/huggingface/transformers/pull/7194/diff?src=pr&el=tree-more) | |

------

[Continue to review full report at Codecov](https://codecov.io/gh/huggingface/transformers/pull/7194?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/huggingface/transformers/pull/7194?src=pr&el=footer). Last update [4f6e525...2c2aa9e](https://codecov.io/gh/huggingface/transformers/pull/7194?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).


Have you tested invoking run_eval.py/finetune.py from examples/seq2seq? 

That is the workflow documented in `seq2seq/README.md`

This command is cheap and if it starts running you know you are fine:

https://discuss.huggingface.co/t/good-command-to-test-examples-seq2seq-refactors/982

Ah, we need tests that aren't tests too :) 

Good catch!
```
cd examples/seq2seq/
python ./run_eval.py -h
Traceback (most recent call last):
  File "./run_eval.py", line 15, in <module>
    from .utils import calculate_bleu, calculate_rouge, parse_numeric_n_bool_cl_kwargs, use_task_specific_params
ImportError: attempted relative import with no known parent package
```

back to the drawing board.

Thanks for your vigilance, @sshleifer 

OK, so while `conftest.py` worked for tests, it left the scripts broken. So in the 2nd attempt I replaced `conftest.py` with `__init__.py` that does the same and works for both types. 

@sshleifer, @LysandreJik 


#### Header added by sam because what is below is tangentially related to this PR :)

p.s. it looks like importing a local module from a script is a very controversial thing from reading SO. If using the retry approach, it's still probably more readable to do:

```
if __name__ == '__main__':
    from mymodule import aaa
else:
    from .mymodule import aaa
```
which is more telling.


> This command is cheap and if it starts running you know you are fine:

Much faster to test is to:
```
python finetune.py -h
```

Pycharm users who develop on seq2seq a lot (I can think of 0 others haha) may need to change Preferences/Project Structure/Content Root to accommodate this. I posted [instructions](https://discuss.huggingface.co/t/pycharm-project-structure-seq2seq/1206) on the forums that I'll delete if this doesn't get merged: .

Merging this with the idea that there is a 10% chance we will have to revert because of some unforeseen dealbreaking issue.