Search code examples
pythonrequirements.txt

PsyNet experiment throws error related to requirements.txt


When running psynet debug, I see this error relating to requirements.txt:

During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/Users/manu/Documents/cap/projects/psynet/demos/iterated_singing/env/bin/psynet", line 33, in <module>
    sys.exit(load_entry_point('psynet', 'console_scripts', 'psynet')())
  File "/Users/manu/Documents/cap/projects/psynet/demos/iterated_singing/env/lib/python3.9/site-packages/click/core.py", line 1137, in __call__
    return self.main(*args, **kwargs)
  File "/Users/manu/Documents/cap/projects/psynet/demos/iterated_singing/env/lib/python3.9/site-packages/click/core.py", line 1062, in main
    rv = self.invoke(ctx)
  File "/Users/manu/Documents/cap/projects/psynet/demos/iterated_singing/env/lib/python3.9/site-packages/click/core.py", line 1668, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/manu/Documents/cap/projects/psynet/demos/iterated_singing/env/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/manu/Documents/cap/projects/psynet/demos/iterated_singing/env/lib/python3.9/site-packages/click/core.py", line 763, in invoke
    return __callback(*args, **kwargs)
  File "/Users/manu/Documents/cap/projects/psynet/demos/iterated_singing/env/lib/python3.9/site-packages/click/decorators.py", line 26, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/Users/manu/Documents/cap/projects/psynet/demos/iterated_singing/env/src/psynet/psynet/command_line.py", line 117, in debug
    ctx.invoke(
  File "/Users/manu/Documents/cap/projects/psynet/demos/iterated_singing/env/lib/python3.9/site-packages/click/core.py", line 763, in invoke
    return __callback(*args, **kwargs)
  File "/Users/manu/Documents/cap/projects/psynet/demos/iterated_singing/env/lib/python3.9/site-packages/dallinger/command_line/utils.py", line 72, in wrapper
    return f(**kwargs)
  File "/Users/manu/Documents/cap/projects/psynet/demos/iterated_singing/env/lib/python3.9/site-packages/dallinger/command_line/__init__.py", line 200, in debug
    debugger.run()
  File "/Users/manu/Documents/cap/projects/psynet/demos/iterated_singing/env/lib/python3.9/site-packages/dallinger/deployment.py", line 287, in run
    self.setup()
  File "/Users/manu/Documents/cap/projects/psynet/demos/iterated_singing/env/lib/python3.9/site-packages/dallinger/deployment.py", line 264, in setup
    self.exp_id, self.tmp_dir = setup_experiment(
  File "/Users/manu/Documents/cap/projects/psynet/demos/iterated_singing/env/lib/python3.9/site-packages/dallinger/utils.py", line 391, in setup_experiment
    pkg_resources.require(dependencies)
  File "/Users/manu/Documents/cap/projects/psynet/demos/iterated_singing/env/lib/python3.9/site-packages/pkg_resources/__init__.py", line 886, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/Users/manu/Documents/cap/projects/psynet/demos/iterated_singing/env/lib/python3.9/site-packages/pkg_resources/__init__.py", line 728, in resolve
    requirements = list(requirements)[::-1]
  File "/Users/manu/Documents/cap/projects/psynet/demos/iterated_singing/env/lib/python3.9/site-packages/pkg_resources/__init__.py", line 3084, in parse_requirements
    yield Requirement(line)
  File "/Users/manu/Documents/cap/projects/psynet/demos/iterated_singing/env/lib/python3.9/site-packages/pkg_resources/__init__.py", line 3094, in __init__
    super(Requirement, self).__init__(requirement_string)
  File "/Users/manu/Documents/cap/projects/psynet/demos/iterated_singing/env/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/requirements.py", line 100, in __init__
    raise InvalidRequirement(
pkg_resources.extern.packaging.requirements.InvalidRequirement: Parse error at "'+https:/'": Expected stringEnd

I think this might relate to my custom package that I'm including in requirements.txt by linking to my GitLab repository, but I think I might have specified it wrong. FYI this repository is private, and I am authenticating to it by HTTPS using a deploy token.


Solution

  • This error means you haven't formatted your dependency correctly. Assuming your GitLab repository is private, and you are accessing it via HTTPS, your requirement should look like this:

    <package_name> @ git+https://<username>:<deploy_token>@gitlab.com/<group_name>/<project_name>@<branch_name>#egg=<package_name>