Пользовательские скрипты pipenv на wsl 2: объект instream shlex.py не имеет атрибута read - PullRequest
1 голос
/ 03 августа 2020

Я переместил свой проект python из собственной установки Linux в Windows и попытался запустить пользовательские скрипты pipenv через WSL 2 на Windows 10, используя pipenv run my_script. Хотя эта же команда работает в собственной установке Ubuntu, на WSL 2 (Ubuntu 20.04) я получаю ошибку атрибута в модуле shlex, касающуюся объекта instream, у которого нет атрибута чтения.

Раздел My [scripts] в Pipfile выглядит так, но я также пробовал запускать python скрипты (вместо скриптов оболочки), и ошибку можно воспроизвести любым кастомным скриптом.

[scripts]
build = "bash ./scripts/main.sh -b"
analyze = "bash ./scripts/main.sh -a"

Я также пытался обновить pipenv пакет, но похоже, что я использую последнюю версию (11.9.0, pipenv-2020.6.2).

Кажется, мой код вообще не запускается, так как я получаю сообщение об ошибке до того, как аргументы будут переданы в собственный сценарий. Это трассировка стека, которую я получаю при выполнении команды:

Traceback (most recent call last):
File "/usr/bin/pipenv", line 11, in <module>
  load_entry_point('pipenv==11.9.0', 'console_scripts', 'pipenv')()
File "/usr/lib/python3/dist-packages/pipenv/vendor/click/core.py", line 722, in __call__
  return self.main(*args, **kwargs)
File "/usr/lib/python3/dist-packages/pipenv/vendor/click/core.py", line 697, in main
  rv = self.invoke(ctx)
File "/usr/lib/python3/dist-packages/pipenv/vendor/click/core.py", line 1066, in invoke
  return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/lib/python3/dist-packages/pipenv/vendor/click/core.py", line 895, in invoke
  return ctx.invoke(self.callback, **ctx.params)
File "/usr/lib/python3/dist-packages/pipenv/vendor/click/core.py", line 535, in invoke
  return callback(*args, **kwargs)
File "/usr/lib/python3/dist-packages/pipenv/cli.py", line 602, in run
  core.do_run(command=command, args=args, three=three, python=python)
File "/usr/lib/python3/dist-packages/pipenv/core.py", line 2200, in do_run
  command = ' '.join(project.scripts[command])
File "/usr/lib/python3/dist-packages/pipenv/project.py", line 374, in scripts
  scripts[k] = shlex.split(v, posix=True)
File "/usr/lib/python3.8/shlex.py", line 311, in split
  return list(lex)
File "/usr/lib/python3.8/shlex.py", line 300, in __next__
  token = self.get_token()
File "/usr/lib/python3.8/shlex.py", line 109, in get_token
  raw = self.read_token()
File "/usr/lib/python3.8/shlex.py", line 140, in read_token
  nextchar = self.instream.read(1)
AttributeError: 'list' object has no attribute 'read'
...