damnever / pigar

:coffee: A tool to generate requirements.txt for Python project, and more than that. (IT IS NOT A PACKAGE MANAGEMENT TOOL)

Home Page:https://damnever.github.io/pigar/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Pigar errors when requirements.txt already exists in Windows venv

ssauvageau- opened this issue · comments

Stack Trace for reference:

(venv) PS C:\Users\Samuel\PycharmProjects\ScorvBot> pigar gen
Traceback (most recent call last):
  File "C:\Users\Samuel\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Users\Samuel\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "C:\Users\Samuel\PycharmProjects\ScorvBot\venv\Scripts\pigar.exe\__main__.py", line 7, in <module>
  File "C:\Users\Samuel\PycharmProjects\ScorvBot\venv\lib\site-packages\pigar\__main__.py", line 550, in main
    cli()
  File "C:\Users\Samuel\PycharmProjects\ScorvBot\venv\lib\site-packages\click\core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
  File "C:\Users\Samuel\PycharmProjects\ScorvBot\venv\lib\site-packages\click\core.py", line 1078, in main
    rv = self.invoke(ctx)
  File "C:\Users\Samuel\PycharmProjects\ScorvBot\venv\lib\site-packages\click\core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "C:\Users\Samuel\PycharmProjects\ScorvBot\venv\lib\site-packages\click\core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "C:\Users\Samuel\PycharmProjects\ScorvBot\venv\lib\site-packages\click\core.py", line 783, in invoke
    return __callback(*args, **kwargs)
  File "C:\Users\Samuel\PycharmProjects\ScorvBot\venv\lib\site-packages\pigar\__main__.py", line 326, in generate
    os.rename(tmp_requirement_file, requirement_file)
FileExistsError: [WinError 183] Cannot create a file when that file already exists: 'C:\\Users\\Samuel\\PycharmProjects\\ScorvBot\\requirements.txt.tmp' -> 'C:\\Users\\Samuel\\PycharmProjects\\ScorvBot\\requirements.txt'

Windows offers no guarantee of os.rename() being an atomic operation.

See pydocs for os.rename.

On Windows, if dst exists a FileExistsError is always raised.

Recommended to use one of

PS - Thanks for the project. Saving me some headaches otherwise. :)

Try install from the main branch:

pip uninstall pigar
pip install git+https://github.com/damnever/pigar.git@main

That'll about do it, thank you. :)