Python Embeddable Zip File Doesn't Include lib/site-packages in sys.path

冷暖自知 提交于 2019-11-30 17:52:47

问题


I am attempting to update our Python version from 3.4 to 3.6. We are embedding Python into a C++ application, so it seemed logical to utilize the new (since Python 3.5) Windows x86 embeddable zip file. However, our application is failing to execute because "lib/site-packages" isn't being added to the sys.path variable. I have confirmed that after installing Python 3.6 on my machine, and running from the installed location, the sys.path variable contains (relative to the python directory):

'...\\python36.zip'
'...\\DLLs'
'...\\lib'
'...'
'...\\lib\\site-packages'

However, when I run from the embeddable zip file on the same machine, the sys.path variable contains (relative to the python directory):

'...\\python36.zip'
'...'
'...\\\n'

In both cases, the "lib/site-packages" directory exists within the Python directory. I also don't have a PYTHONPATH environment variable defined. Does anyone know how to get the embeddable zip file to act the same as the installed version, with respect to how it determines sys.path?


回答1:


After extracting the Python embeddable zip file, there is a file called "python36._pth" in the root directory. That file contains the following text:

# Uncomment to run site.main() automatically
#import site

As the comment indicates, simply uncomment the import site statement by removing the '#' character. After doing so, the sys.path variable contains:

'...\\python36.zip'
'...'
'...\\\n'
'...\\lib\\site-packages'

This is still different than the installed version, but is exactly what I needed in my particular case.

BEGIN EDIT

I also discovered that you can remove the "python36._pth" file entirely, which reverts Python to behavior of the non-embeddable version.



来源:https://stackoverflow.com/questions/44443254/python-embeddable-zip-file-doesnt-include-lib-site-packages-in-sys-path

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!