Python“嵌入式”包装内的文件夹结构

问题描述 投票:0回答:1

我分发了一个用 Python 编写的可立即运行的 Windows 软件:

  • 传送 Python 嵌入式版本的内容,例如
    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 等。

    

python windows python-packaging python-embedding pth
1个回答
-1
投票
有没有办法将所有依赖项文件夹移动到子文件夹,并且仍然可以让Python(嵌入版本)工作?

是的。原则上,依赖项可以安装在任何地方,只要包含它们的文件夹位于 PYTHONPATH 上(请参阅:
PYTHONPATH

)。 默认情况下,依赖项应安装在Python“site-packages”目录中:

%APPDATA%\Python\PythonXY\site-packages

{some_dir}\PythonXY\Lib\site-packages
下(请参阅:
site.USER_SITE
)。 除非您有特殊的 Python 可执行文件,否则通常也不需要打包额外的依赖项。 您的问题需要查阅的主要文档是:

Python 如何查找模块?

.

© www.soinside.com 2019 - 2024. All rights reserved.