我分发了一个用 Python 编写的可立即运行的 Windows 软件:
python-3.8.10-embed-amd64.zip
myprogram\
包文件夹(=程序本身)pythonw.exe -m myprogram
即可启动程序效果很好。 (可能是 cxfreeze 等的简单替代方案,但超出了此处的主题)
树结构为:
main\
_asyncio.pyd
_bz2.pyd
... + other .pyd files
libcrypto-1_1.dll
... + other .dll files
python.exe
pythonw.exe
python38._pth
python38.zip
...
myprogram\ # here my main program as a module
PIL\ # dependencies
win32\
numpy\
... # many other folders for dependencies
有没有办法将所有依赖项文件夹移动到子文件夹,并且仍然让Python(嵌入版本)工作?如何做到这一点? 更准确地说,像这样:
main\
python.exe
pythonw.exe
python38._pth
python38.zip
...
myprogram\ # here my main program as a module
dependencies\
PIL\ # all required modules
win32\
numpy\
...
_asyncio.pyd # and also .pyd files
...
注意:我们的目标是使用嵌入式 Python,它“完全独立”于系统的全局 Python 安装。所以这与任何环境变量无关,例如 PYTHONPATH
等。
PYTHONPATH是的。原则上,依赖项可以安装在任何地方,只要包含它们的文件夹位于 PYTHONPATH 上(请参阅:
)。 默认情况下,依赖项应安装在Python“site-packages”目录中:
%APPDATA%\Python\PythonXY\site-packages
或
{some_dir}\PythonXY\Lib\site-packages
下(请参阅:site.USER_SITE)。 除非您有特殊的 Python 可执行文件,否则通常也不需要打包额外的依赖项。 您的问题需要查阅的主要文档是:Python 如何查找模块?