Hi Eric,

Thanks so much for your reply! I did know about the spec file, but did not 
quite understand how to really use it.

So I tried your suggested approach, but alas while it built  and ran 
without complaint, I get the same results.

None of the anyascii._data.xxx imports showed up in the debug output, so 
perhaps these shouldn't be treated as hidden imports? I'll try a few other 
approaches...but in any case using the spec file as you suggested is a much 
better idea!

Thanks again, and of course any other ideas are very welcome!

Julie

On Wednesday, March 1, 2023 at 12:12:08 PM UTC-5 Eric Fahlgren wrote:

> Hi Julie,
>
> Looking at the source for anyascii, it uses importlib.resources to grab 
> those binaries, so I think it should be able to just grab them as you're 
> trying to do (if it anyascii were just doing "open...read", that would 
> probably result in some different strategy being needed).
>
> In any case, when you run your pyinstaller command, have you noted that it 
> produces a file "xxx.spec" (xxx is your exe name)?  To make this easier 
> (easiest?), start using that file instead of jamming a bunch of stuff on 
> the command line.
>
> First, make sure you have a good spec, assuming your old command line 
> looked like:
>
> $ pyinstaller xxx.py --a-bunch-of-stuff
>
> you'll now use this in its place:
>
> $ pyinstaller xxx.spec
>
> as "xxx.spec" contains all the settings from the command line.  Edit that 
> file and look for "hiddenimports" in the "Analysis" block, I think that is 
> the most likely candidate to solve this.  Change it to something like
>
>    hiddenimports = ['anyascii._data.000', 'anyascii._data.001'],
>
> and try the build, see if it coughs up any errors or reports that yes 
> indeed it's including those data files.  I'm sort of educated-guessing on 
> the names listed there, but it should be something very close to that.  If 
> it works, then write some code in the .spec file that looks grossly like 
> (yes, the is hacky, but it should give you the idea):
>
> from glob import glob
> from os.path import split
> includes = []
> for data_file in glob('wherever/they/live/anyascii/_data/*'):
>     dir, name = split(data_file)
>     if len(name) == 3:  # <-- The super hacky part...
>         includes.append('anyascii._data.%s' % name)
>
> then change that hiddenimports to 
>
>    hiddenimports = includes,
>
> Run "pyinstaller xxx.spec" and see if it works.
>
> Eric
>
> On Wed, Mar 1, 2023 at 12:02 AM Julie N <julie.ne...@gmail.com> wrote:
>
>> Hi all,
>>
>> I have a fairly simple script that uses anyascii (
>> https://pypi.org/project/anyascii/) and works fine when run in a 
>> development environment.
>>
>> However, when built into an executable with PyInstaller, I start seeing 
>> problems.
>>
>> First, an exception was thrown saying the module 'anyascii._data' 
>> couldn't be found. Looking in the installation, there is a subfolder of 
>> this name which appears to hold the datafiles used to do the Unicode to 
>> ascii transliteration.
>>
>> Adding
>>
>> from anyascii import _data
>>
>> to my script got rid of  the exception, but anyascii still doesn't work 
>> -- it replaces the Unicode characters with nothing instead of the desired 
>> substitutions, that is, it still can't seem to find its datafiles!
>>
>> So I have tried to add lots of variations of the following to my command 
>> line:
>>
>> --add-data "[path to Python 
>> installation]\Python\Python37\Lib\site-packages\anyascii\_data\*;anyascii._data"
>>
>> ...but still no luck! Any advice about how to incorporate these datafiles 
>> so anyascii can find them?
>>
>> Googling, of course, has yielded nothing. :( I'm also building with 
>> --debug=imports, but the output hasn't yielded anything helpful either.
>>
>> Any advice about how to correctly incorporate these datafiles into my 
>> executable?
>>
>> Thanks!
>>
>> Julie
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "PyInstaller" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to pyinstaller...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/pyinstaller/361386f0-c39d-47e6-8374-1cfaac6e0a7en%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/pyinstaller/361386f0-c39d-47e6-8374-1cfaac6e0a7en%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"PyInstaller" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to pyinstaller+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/pyinstaller/a13cbaa4-ed19-4a8c-af50-76f9fac7ee30n%40googlegroups.com.

Reply via email to