Open rickydaricky opened 2 years ago
The autopackages recipes tries to detect usage of a number of packages by looking in the dependency graph for the main script, and this found a number of dependencies.
It the script, and the list of installed packages, something you can share publicly?
Thanks so much!
And yup – I've uploaded the code here: https://github.com/rickydaricky/wordle_solver.
I'm probably just be unfamiliar with dependency graphs, but I think what's happening is that my py2app command to build a standalone app is sourcing every library / package in my python environment instead of only those that I actually use in my code (and are shown in requirements.txt).
I'm still not sure how to specify that the only libraries I want py2app to include are the ones I explicitly import and have in my requirements.txt. Thanks again!
I'll look at your code later, this is just a short explanation of how the dependency graph works.
The dependency graph is build using the modulegraph library that scans the (byte) code of Python modules for import statements. The graph builder starts at the main script of the app, and recursively looks at every module found in this way. Py2app's recipe system can update the graph (for example by adding known dependencies of C extensions, and removing dependencies that are known not to be used in general).
The scanner code shouldn't find any dependencies that aren't actually present in the code, but can find dependencies that aren't actually used (for example because library has optional support for some other library). That said, the scanner is software and all software has bugs...
Thanks for the comment and explanation. I checked and it doesn't seem like any of those extraneous libraries are being called, imported, or used anywhere, but are nonetheless being picked up. Does py2app detect it as being used even if it's just in my python environment? Thanks!
Almost certainly a me problem but I've tried reading the documentation and can't really figure out what to do.
When I run
python setup.py py2app
, my terminal gets to a line of:using recipe: autopackages *** {'packages': ['docutils', 'h5py', 'numpy', 'scipy', 'tensorflow']}
despite none of my 5 scripts ever importing any of those libraries.This quickly errors and tells me that
No module named tensorflow.core.platform.lib_cpu_feature_guard.so_ccsharedlib
.How do I make sure that py2app isn't trying to import or use libraries that I don't actually need and never call? Does it have something to do with how I write my setup.py (I use the default) despite having multiple files in my program?
Thanks so much!