Repository: pykeen/pykeen
Issue: FileNotFoundError when using my own dataset
Root cause: Validation Gap

Hi, I followed the [intro](https://pykeen.readthedocs.io/en/stable/byo/data.html) to use my own dataset for training. But there is a FileNotFoundError. May I know how to solve it? Thanks!

```python
from pykeen.triples import TriplesFactory
from pykeen.pipeline import pipeline

TRAIN_PATH = "C:/Users/Hao Liu/Desktop/train.txt"
TEST_PATH = "C:/Users/Hao Liu/Desktop/test.txt"

result = pipeline(
    training=TRAIN_PATH,
    testing=TEST_PATH,
    model='TransE',
    training_kwargs=dict(num_epochs=10),  # short epochs for testing - you should go higher
)`

`---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-4-f6eac9536061> in <module>
      7 
      8 
----> 9 result = pipeline(
     10     training=TRAIN_PATH,
     11     testing=TEST_PATH,

C:\anaconda3\lib\site-packages\pykeen\pipeline\api.py in pipeline(dataset, dataset_kwargs, training, testing, validation, evaluation_entity_whitelist, evaluation_relation_whitelist, model, model_kwargs, interaction, interaction_kwargs, dimensions, loss, loss_kwargs, regularizer, regularizer_kwargs, optimizer, optimizer_kwargs, clear_optimizer, training_loop, training_loop_kwargs, negative_sampler, negative_sampler_kwargs, training_kwargs, stopper, stopper_kwargs, evaluator, evaluator_kwargs, evaluation_kwargs, result_tracker, result_tracker_kwargs, metadata, device, random_seed, use_testing_data, evaluation_fallback, filter_validation_when_testing)
   1095     _result_tracker.end_run()
   1096 
-> 1097     return PipelineResult(
   1098         random_seed=_random_seed,
   1099         model=model_instance,

C:\anaconda3\lib\site-packages\pykeen\pipeline\api.py in __init__(self, random_seed, model, training, training_loop, losses, metric_results, train_seconds, evaluate_seconds, stopper, metadata, version, git_hash)

C:\anaconda3\lib\site-packages\pykeen\version.py in get_git_hash(terse)
     28         code is not installed in development mode.
     29     """
---> 30     rv = _run('git', 'rev-parse', 'HEAD')
     31     if rv is None:
     32         return 'UNHASHED'

C:\anaconda3\lib\site-packages\pykeen\version.py in _run(*args)
     49     with open(os.devnull, 'w') as devnull:
     50         try:
---> 51             ret = check_output(  # noqa: S603,S607
     52                 args,
     53                 cwd=os.path.dirname(__file__),

C:\anaconda3\lib\subprocess.py in check_output(timeout, *popenargs, **kwargs)
    409         kwargs['input'] = '' if kwargs.get('universal_newlines', False) else b''
    410 
--> 411     return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
    412                **kwargs).stdout
    413 

C:\anaconda3\lib\subprocess.py in run(input, capture_output, timeout, check, *popenargs, **kwargs)
    487         kwargs['stderr'] = PIPE
    488 
--> 489     with Popen(*popenargs, **kwargs) as process:
    490         try:
    491             stdout, stderr = process.communicate(input, timeout=timeout)

C:\anaconda3\lib\subprocess.py in __init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, encoding, errors, text)
    852                             encoding=encoding, errors=errors)
    853 
--> 854             self._execute_child(args, executable, preexec_fn, close_fds,
    855                                 pass_fds, cwd, env,
    856                                 startupinfo, creationflags, shell,

C:\anaconda3\lib\subprocess.py in _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, unused_restore_signals, unused_start_new_session)
   1305             # Start the process
   1306             try:
-> 1307                 hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
   1308                                          # no special security
   1309                                          None, None,

FileNotFoundError: [WinError 2] 系统找不到指定的文件。
```

Oh this is a very strange error indeed, it appears that it's an issue with calling git. Do you have git installed?

> Oh this is a very strange error indeed, it appears that it's an issue with calling git. Do you have git installed?

Yes. I have installed git.

I'm sorry but I don't think I'll be able to debug exactly why this is happening - the combination of Windows and Anaconda is not our recommended setup - if you can, I'd definitely suggest switching to linux.

However, I will be able to provide a quick fix so you don't get this error by catching a FileNotFoundError in the code that's looking for git. I'll send a PR soon :) 

> I'm sorry but I don't think I'll be able to debug exactly why this is happening - the combination of Windows and Anaconda is not our recommended setup - if you can, I'd definitely suggest switching to linux.
> 
> However, I will be able to provide a quick fix so you don't get this error by catching a FileNotFoundError in the code that's looking for git. I'll send a PR soon :)

Thank you!

@Hao-666 I've merged a fix into the main branch, so it will appear in version 1.5.1 which I want to release some time this week. In the mean time, you can install the new code either from github or via the source code by following the instructions here https://pykeen.readthedocs.io/en/stable/installation.html