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 <[email protected]> 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 [email protected].
>> 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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/pyinstaller/a13cbaa4-ed19-4a8c-af50-76f9fac7ee30n%40googlegroups.com.