简体   繁体   中英

python - pyinstaller “RuntimeWarning: Parent module 'PyInstaller.hooks.hook-PIL' not found while handling absolute import” and “tcl” related errors

I get a warning message while trying to create exectable file using pyinstaller . This warning appeared after installing Pillow . Previously i nevre got any warnings and was able to make it through.

the warning i get by pyinstaller is:

7314 INFO: Analyzing main.py
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PyInstaller-2.1.1dev_-py2.7.egg/PyInstaller/hooks/hook-PIL.Image.py:14: RuntimeWarning: Parent module 'PyInstaller.hooks.hook-PIL' not found while handling absolute import
  from PyInstaller.hooks.shared_PIL_Image import *

Also when i tried to run the executable's exe/consol version of my code that lies inside the dist folder created by the pyinstaller ( dist/main/main ), these are displayed..

Traceback (most recent call last):
  File "<string>", line 26, in <module>
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PyInstaller-2.1.1dev_-py2.7.egg/PyInstaller/loader/pyi_importers.py", line 276, in load_module
    exec(bytecode, module.__dict__)
  File "/Users/..../build/main/out00-PYZ.pyz/PIL.PngImagePlugin", line 40, in <module>
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PyInstaller-2.1.1dev_-py2.7.egg/PyInstaller/loader/pyi_importers.py", line 276, in load_module
    exec(bytecode, module.__dict__)
  File "/Users/..../build/main/out00-PYZ.pyz/PIL.Image", line 53, in <module>
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PyInstaller-2.1.1dev_-py2.7.egg/PyInstaller/loader/pyi_importers.py", line 276, in load_module
    exec(bytecode, module.__dict__)
  File "/Users/..../build/main/out00-PYZ.pyz/FixTk", line 74, in <module>
OSError: [Errno 20] Not a directory: '/Users/.../dist/main/tcl'
logout

[Process completed]

so, i tried by uninstalling pillow , installing tk tcl dev version. And then installed pillow . Even that didnt helped.

I also tried reinstalling pyinstaller ,. didnt help too

Update 1:

It seems Pyinstaller.hooks.hook-PIL.py file was missing in the Pyinstaller/hooks directory. And it was missing on all platforms(Mac, windows and linux). This is the warning/error message that i get on windows, which is the same i got on mac and on linux. Windows错误/警告 Later i found a link which said, its just to need Python import machinery happy . so i created as said so. Then i dont get the same error on all platforms, But on mac i still get the PILImagePlugin , Image and FixTk errors

Solution for tcl :

I found what was going wrong,.. Every problem that i faced on OSX was the OS itself(exactly the macport ). Python by default comes with the mac OS. And this version of python may be useful for just learning basic python, but is not suitable for Development purpose.

Installing brew's python helped. I followed this SO link . After doing these i was still getting errors. Later i had to change the paths on /etc/paths . Basically rearranging them should work. But still then i wasn't getting it right.

Then i had to change the .bash_profile , which worked for most users, But still i was getting mac's version of python and pip, not the brews version of python.

Finally i had to restart the machine for a couple of times and do the /etc/paths and .bash_profile steps repeatedly to get the system wide effect to accept brews version of python and pip


Solution for PIL :

just adding a file called hook-PIL.py with an empty content would serve the purpose. I found a link which was having the hook files content of pyinstaller .

The location to create

for mac : /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PyInstaller-2.1.1dev_-py2.7.egg/PyInstaller/hooks/ Actually for mac this step wouldn't be required. When we install python through brew and change the path, everything that you try to install later either through pip install or from source packages tend to choose a different path. And everything will be taken care of.

for windows: C:\\Python27\\lib\\site-packages\\PyInstaller-2.1.1.dev0-py2.7.egg\\PyInstaller\\hooks

**Please check if this is a valid path on your machine before creating the file and then create the file. And im not sure or i don't know if just adding an empty file is the right way. But it worked for me

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM