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 [email protected].
To post to this group, send email to [email protected].
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.

Reply via email to