嵌入Python脚本安装时ImportError:没有名为site的模块
你好,我创建了一个应用程序,让用户可以用Python编写脚本。这个应用程序的主要部分是用Python写的,我用pyinstaller把它打包成了一个exe文件,这部分运行得很好。
这个应用程序还调用了一个嵌入Python的DLL,这个DLL会执行一些用户编写的Python脚本。在我测试的时候没有遇到问题,但一旦我用pyinstaller打包程序后,DLL就报错了,提示“ImportError: No module named site”。
我使用的是Windows系统,Python版本是2.7。
根据我看到的其他帖子,这个问题可能和PYTHONHOME和PYTHONPATH这两个环境变量有关,我想我可以在DLL里面设置它们。不过考虑到最终用户的电脑上可能没有安装Python,我是否需要把完整的Python 2.7安装包和我的程序一起提供,并把PYTHONHOME和PYTHONPATH设置为这个安装位置?这样做对吗?
2 个回答
0
你说得对。最终用户应该能够运行你的exe文件,即使他们的电脑上没有安装Python。实际上,当用户运行你的exe时,它应该能够调用pyx和pyo文件。而这些文件会被pyinstaller打包在一起。此外,你还需要确保正确指向这些pyx和pyo文件的路径。
0
我找到的唯一解决办法就是把一些 Python 2.7 的文件和应用程序一起打包,也就是把 Lib 和 DLLs 这两个文件夹放在一个叫 Python27 的文件夹里,这个文件夹和包含嵌入 Python 的可执行文件在同一个目录下。
这样做解决了用户可能没有安装 Python 的问题,也让他们可以在这个应用程序的本地 Python 环境中添加自己的模块。基本上,我就是这样做的,才把它弄成我想要的样子。