import subprocess, os, tempfile, sys from locale import setlocale, LC_ALL locale = 'fr_FR.iso88591' encoding = 'iso-8859-1' modname = 'issue3080\xE4' modname_bytes = modname.encode(encoding) code = b'import ' + modname_bytes mod_filename = modname_bytes + b'.py' setlocale(LC_ALL, locale) olddir = os.getcwd() with tempfile.TemporaryDirectory() as tmpdir: os.chdir(tmpdir) text = 'issue #3080' with open(mod_filename, 'w') as fp: print("print('{}')".format(text), file=fp) files = os.listdir(b'.') print("Files in {}: {}".format(tmpdir, files)) env = os.environ.copy() env['LC_ALL'] = locale process = subprocess.Popen([sys.executable, '-c', code], env=env, stdout=subprocess.PIPE) stdout, stderr = process.communicate() line = stdout.rstrip().decode('ascii') assert line == text os.chdir(olddir)