【问题标题】:Why does sys.path have "c:\\windows\\system\python34.zip"?为什么 sys.path 有“c:\\windows\\system\\python34.zip”?
【发布时间】:2016-04-21 17:27:12
【问题描述】:

当我导入 sys 时,

>>> import sys
>>> sys.path
['', 'C:\\Program Files\\Python 3.5\\lib\\site-packages\\pyinstaller-3.0-py3.5.egg', **'C:\\Program Files\\Python 3.5\\python35.zip'**, 'C:\\Program Files\\Python 3.5\\DLLs', 'C:\\Program Files\\Python 3.5\\lib', 'C:\\Program Files\\Python 3.5', 'C:\\Program Files\\Python 3.5\\lib\\site-packages', 'C:\\Program Files\\Python 3.5\\lib\\site-packages\\win32', 'C:\\Program Files\\Python 3.5\\lib\\site-packages\\win32\\lib', 'C:\\Program Files\\Python 3.5\\lib\\site-packages\\Pythonwin']`

我查看了目录下是否有python34.zip之类的文件, 但答案是否定的。为什么会显示?

【问题讨论】:

  • sys.path 中,当 Python 嵌入到应用程序中时,它支持位于 DLL 旁边的压缩标准库。
  • 改进格式和语法
  • @eryksun,为什么不将其发布为答案?
  • 甚至支持嵌入。文件必须在那里吗???
  • 如果标准库不在 DLL 和 Lib 中,它必须在 python35.dll 旁边。否则,如果 zip 文件不存在,导入系统将跳过该条目。

标签: python windows pythonpath sys python-3.5


【解决方案1】:

可以将 Python 安装中包含的整个 lib 文件夹压缩到一个名为 python3x.dll 的存档中,其中 x 取决于您的 Python 版本。

如果您需要为某个项目使用最小的、独立的、专用的 Python 版本,这很有用,如果您打算随应用程序重新分发 Python,这会有所帮助,因此用户无需安装 Python 即可运行它。

从 Python 3.5 开始,您可以下载官方可嵌入的 windows 版本,其中包含压缩后的 python35.zip - 显然没有 lib 文件夹。

实际上,我还没有测试压缩 3.4 或更低版本,但我很快就会测试。方向应该是:将每个 py 编译为 pyc 或 pyo,删除 pycache 文件夹,删除不需要的任何库(*),检查 stackoverflow 和 python doc

(*) 你可以使用像Process Monitor 这样的应用程序,它会告诉你在你的应用程序运行时python 使用了哪个文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多