Hi, I am using custom fabric script to make .po-files for i18n.
The problem is, "django-admin makemessages" keeps on crashing. It also leaves undeleted .html.py files. I can reproduce this error also by using plain "django-admin makemessages -l pt". I think this problem in Windows-specific. I am using 64-bit Windows 10, Django 1.11, Fabric3 1.13.1.post1, and Windows Powershell 5.1.14393.1198. Any help would be appreciated. Br, np *"Minimal working example":* - Crashed on third try. Sometimes it complains about "locale\django.pot" being used by another process, too. Fourth try worked fine. (<my_project>) PS C:\Users\<User>\Dropbox\<my_project>\site\src\<my_project>\templates\bases> django-admin makemessages -l pt processing locale pt (<my_project>) PS C:\Users\<User>\Dropbox\<my_project>\site\src\<my_project>\templates\bases> django-admin makemessages -l pt processing locale pt (<my_project>) PS C:\Users\<User>\Dropbox\<my_project>\site\src\<my_project>\templates\bases> django-admin makemessages -l pt Traceback (most recent call last): File "C:\Users\<User>\Miniconda3\Lib\runpy.py", line 184, in _run_module_as_main "__main__", mod_spec) File "C:\Users\<User>\Miniconda3\Lib\runpy.py", line 85, in _run_code exec(code, run_globals) File "C:\Python\VirtualEnv\<my_project>\Scripts\django-admin.exe\__main__.py", line 9, in <module> File "c:\python\virtualenv\<my_project>\lib\site-packages\django\core\management\__init__.py", line 363, in execute_from_command_line utility.execute() File "c:\python\virtualenv\<my_project>\lib\site-packages\django\core\management\__init__.py", line 355, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "c:\python\virtualenv\<my_project>\lib\site-packages\django\core\management\base.py", line 283, in run_from_argv self.execute(*args, **cmd_options) File "c:\python\virtualenv\<my_project>\lib\site-packages\django\core\management\base.py", line 330, in execute output = self.handle(*args, **options) File "c:\python\virtualenv\<my_project>\lib\site-packages\django\core\management\commands\makemessages.py", line 360, in handle potfiles = self.build_potfiles() File "c:\python\virtualenv\<my_project>\lib\site-packages\django\core\management\commands\makemessages.py", line 402, in build_potfiles self.process_files(file_list) File "c:\python\virtualenv\<my_project>\lib\site-packages\django\core\management\commands\makemessages.py", line 499, in process_files self.process_locale_dir(locale_dir, files) File "c:\python\virtualenv\<my_project>\lib\site-packages\django\core\management\commands\makemessages.py", line 594, in process_locale_dir build_file.cleanup() File "c:\python\virtualenv\<my_project>\lib\site-packages\django\core\management\commands\makemessages.py", line 157, in cleanup os.unlink(self.work_path) PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: '.\\base.html.py' (<my_project>) PS C:\Users\<User>\Dropbox\<my_project>\site\src\<my_project>\templates\bases> *Real-usage example* *Fabric code:* def translate(appfolder=None): """ Use django-admin makemessages to make .po files INPUTS: folder: pathlib.Path object for the folder where to start. Used for recursion. (in normal usage, no 'folder' parameter is provided.) """ forbidden = ('__pycache__', 'migrations', 'locale', 'utils', 'static') if not appfolder: appfolder = Path(__file__).parent.parent / '<my_project>' for item in appfolder.iterdir(): if item.is_dir() and (item.name not in forbidden): if not (item / 'locale').exists(): (item / 'locale').mkdir() print('Created {}'.format(str((item / 'locale')))) print('Running makemessages in {}'.format(str(item))) os.chdir(str(item)) os.system("python {django_admin} makemessages -l fi".format( django_admin = django_admin )) translate(appfolder=item) *Traceback:* - Some files before and after these errors did not produce any errors. Running makemessages in C:\Users\<User>\Dropbox\<my_project>\site\src\<my_project>\templates Traceback (most recent call last): File "C:\Python\VirtualEnv\<my_project>\Scripts\django-admin.py", line 5, in <module> management.execute_from_command_line() File "C:\Python\VirtualEnv\<my_project>\lib\site-packages\django\core\management\__init__.py", line 363, in execute_from_command_line utility.execute() File "C:\Python\VirtualEnv\<my_project>\lib\site-packages\django\core\management\__init__.py", line 355, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "C:\Python\VirtualEnv\<my_project>\lib\site-packages\django\core\management\base.py", line 283, in run_from_argv self.execute(*args, **cmd_options) File "C:\Python\VirtualEnv\<my_project>\lib\site-packages\django\core\management\base.py", line 330, in execute output = self.handle(*args, **options) File "C:\Python\VirtualEnv\<my_project>\lib\site-packages\django\core\management\commands\makemessages.py", line 360, in handle potfiles = self.build_potfiles() File "C:\Python\VirtualEnv\<my_project>\lib\site-packages\django\core\management\commands\makemessages.py", line 402, in build_potfiles self.process_files(file_list) File "C:\Python\VirtualEnv\<my_project>\lib\site-packages\django\core\management\commands\makemessages.py", line 499, in process_files self.process_locale_dir(locale_dir, files) File "C:\Python\VirtualEnv\<my_project>\lib\site-packages\django\core\management\commands\makemessages.py", line 594, in process_locale_dir build_file.cleanup() File "C:\Python\VirtualEnv\<my_project>\lib\site-packages\django\core\management\commands\makemessages.py", line 157, in cleanup os.unlink(self.work_path) PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: '.\\account\\account_inactive.html.py' Running makemessages in C:\Users\<User>\Dropbox\<my_project>\site\src\<my_project>\templates\account Traceback (most recent call last): File "C:\Python\VirtualEnv\<my_project>\Scripts\django-admin.py", line 5, in <module> management.execute_from_command_line() File "C:\Python\VirtualEnv\<my_project>\lib\site-packages\django\core\management\__init__.py", line 363, in execute_from_command_line utility.execute() File "C:\Python\VirtualEnv\<my_project>\lib\site-packages\django\core\management\__init__.py", line 355, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "C:\Python\VirtualEnv\<my_project>\lib\site-packages\django\core\management\base.py", line 283, in run_from_argv self.execute(*args, **cmd_options) File "C:\Python\VirtualEnv\<my_project>\lib\site-packages\django\core\management\base.py", line 330, in execute output = self.handle(*args, **options) File "C:\Python\VirtualEnv\<my_project>\lib\site-packages\django\core\management\commands\makemessages.py", line 360, in handle potfiles = self.build_potfiles() File "C:\Python\VirtualEnv\<my_project>\lib\site-packages\django\core\management\commands\makemessages.py", line 417, in build_potfiles with io.open(potfile, 'w', encoding='utf-8') as fp: OSError: [Errno 22] Invalid argument: 'C:\\Users\\<User>\\Dropbox\\<my_project>\\site\\src\\<my_project>\\templates\\account\\email\\locale\\django.pot' Running makemessages in C:\Users\<User>\Dropbox\<my_project>\site\src\<my_project>\templates\account\email Traceback (most recent call last): File "C:\Python\VirtualEnv\<my_project>\Scripts\django-admin.py", line 5, in <module> management.execute_from_command_line() File "C:\Python\VirtualEnv\<my_project>\lib\site-packages\django\core\management\__init__.py", line 363, in execute_from_command_line utility.execute() File "C:\Python\VirtualEnv\<my_project>\lib\site-packages\django\core\management\__init__.py", line 355, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "C:\Python\VirtualEnv\<my_project>\lib\site-packages\django\core\management\base.py", line 283, in run_from_argv self.execute(*args, **cmd_options) File "C:\Python\VirtualEnv\<my_project>\lib\site-packages\django\core\management\base.py", line 330, in execute output = self.handle(*args, **options) File "C:\Python\VirtualEnv\<my_project>\lib\site-packages\django\core\management\commands\makemessages.py", line 360, in handle potfiles = self.build_potfiles() File "C:\Python\VirtualEnv\<my_project>\lib\site-packages\django\core\management\commands\makemessages.py", line 402, in build_potfiles self.process_files(file_list) File "C:\Python\VirtualEnv\<my_project>\lib\site-packages\django\core\management\commands\makemessages.py", line 499, in process_files self.process_locale_dir(locale_dir, files) File "C:\Python\VirtualEnv\<my_project>\lib\site-packages\django\core\management\commands\makemessages.py", line 594, in process_locale_dir build_file.cleanup() File "C:\Python\VirtualEnv\<my_project>\lib\site-packages\django\core\management\commands\makemessages.py", line 157, in cleanup os.unlink(self.work_path) PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: '.\\email_confirmation_message.txt.py' -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/ce301ad9-1584-468e-9fef-9e81ef9473b1%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.