15
votes

I have created a .exe file of a simple script with intentions to run it on a server however I cannot seem to figure out what this fault means or find any answers online. The fault code is as follows:

Fatal Python error: initfsencoding: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'

Current thread 0x00003c8c (most recent call first):

To get this far I used pyinstaller

pyinstaller --onefile MyScript.py

When this didn't work I also tried

pyinstaller MyScript.py

I am running on windows 10, python 3.7 within admin command prompt, within a C:\ file directory.

My sys.path is

['', 'C:\Users\user\AppData\Local\Programs\Python\Python37-32\python37.zip', 'C:\Users\user\AppData\Local\Programs\Python\Python37-32\DLLs', 'C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib', 'C:\Users\user\AppData\Local\Programs\Python\Python37-32', 'C:\Users\user\AppData\Roaming\Python\Python37\site-packages', 'C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\site-packages', 'C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\win32', 'C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\win32\lib', 'C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\Pythonwin']

Any help is appreciated

3
Does your python launch when you type python in your cmd? - Vineeth Sai
Yep python works, all env paths were correctly installed along with python - EcSync
Can you paste your PYTHONHOME and PYTHONPATH from your system variables? - Vineeth Sai
pythonhome- C:\Python37 pythonpath- C:\Users\esinclair\AppData\Local\Programs\Python\Python37-32 - EcSync
I have added to the question what sys.path gives me - EcSync

3 Answers

9
votes

Looks like this is happening due to some problem in python installation. Are you sure python is configured properly? Did you add it into ENVIRONMENT VARIABLES?

Most likely it is because your PYTHONPATH ,i.e the one that locates the site-packages is improperly configured. It should work fine once you point PYTHONPATH to the corrent python3.x installation.

Once launch python from your cmd and check which site-packages it is loading.

import sys
sys.path

And then verify what is actually present in your PYTHONHOME

0
votes

this error means that Py_SetPath forced python to use a path which doesn't include python38.zip, add the full pathname to python38.zip to the Py_SetPath, or don't use Py_SetPath and work with python38._pth instead.

#define PY_SSIZE_T_CLEAN
#include <Python.h>


int main(int argc char **argv)
{
        Py_SetPath(L"C:\\path-to\\python-3.8.5-embed-amd64\\python38.zip;C:\\path-to\\python-3.8.5-embed-amd64");
        Py_Initialize();
        // ...
}

-3
votes

So I managed to fix this issue by rebuilding the exe file and dumping all of the site packages from python home to the exe dist folder. Will go through them again to figure out which one was causing issues.

EDIT

I narrowed this down and found the specific issue was the plotly package was not being dumped into the dist folder. I am not sure why but this is the only package I was using that pyinstaller wouldn't pick up