Eric, I had tested setting the path at the beginning of the main script, but that was unfruitful. I had not thoroughly looked into runtime_hooks, because it didn't seem to be any different than what I was already attempting. Given your suggestion, though, I gave it a shot. I set up a runtime hook to point to a boot script (that only set the path, as you provided in your example), and I got the same behavior. The path includes the directory containing all of the DLLs I'm trying to provide. The only difference is that I didn't set a separate 'OUR_PRODUCT_INSTALL_DIR' environment variable, which doesn't seem like it's necessary, but I could be wrong.
Do you have any further ideas? On Sunday, June 9, 2019 at 9:21:15 AM UTC-4, Eric Fahlgren wrote: > > Ben, I think we're doing exactly that in our code. Exactly when are you > setting PATH? Do you use the runtime_hooks in your .spec file to point to > a boot file, so it happens as part of initialization of the product exe? > > XXX.spec contains (among all the other stuff): > analyzed = Analysis( > scripts = [path.join(XXX_ROOT, 'XXX/main.py')], > runtime_hooks = [path.join(XXX_ROOT, 'install/XXX_boot.py')], > ... > > Then in install/XXX_boot.py we have (obviously Windows-specific): > > os.environ['OUR_PRODUCT_INSTALL_DIR'] = 'something' > os.environ['PATH'] = r'%OUR_PRODUCT_INSTALL_DIR_VAR%\bin;' + > os.environ['PATH'] > > On Fri, Jun 7, 2019 at 12:04 AM Ben Green <[email protected] > <javascript:>> wrote: > >> The problem: >> I have a small program that imports a SWIG module, which imports some >> DLLs. I need to create an executable for this program that can reference >> these external DLLs as external DLLs, not by bundling them in the >> executable. >> >> From what I've read, this doesn't seem to be possible. I've tried a few >> different solutions from forums and such that changed the DLL path or >> something, and I've tried changing sys.path and os.environ["PATH"], but >> none of these seem to help the SWIG module find the external DLLs. I can >> get the program to run just fine if I include the DLLs in the executable, >> but that isn't the desired behavior. >> >> Does anyone know if there's a way to get PyInstaller to do this? >> >> -- >> 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] <javascript:>. >> To post to this group, send email to [email protected] >> <javascript:>. >> Visit this group at https://groups.google.com/group/pyinstaller. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/pyinstaller/b816bd6d-cf3c-4056-8e0c-d06413d2cf75%40googlegroups.com >> >> <https://groups.google.com/d/msgid/pyinstaller/b816bd6d-cf3c-4056-8e0c-d06413d2cf75%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > -- 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 post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/pyinstaller. To view this discussion on the web visit https://groups.google.com/d/msgid/pyinstaller/44567498-d098-457d-901b-416f534f2b4c%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
