Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为windows创建(或扩展)Python3.x可嵌入zip_Python_Windows_Zip - Fatal编程技术网

如何为windows创建(或扩展)Python3.x可嵌入zip

如何为windows创建(或扩展)Python3.x可嵌入zip,python,windows,zip,Python,Windows,Zip,我的目标是创建或重新绑定一个可嵌入的zip文件,就像pythondl页面“windowsx86-64可嵌入的zip文件”上的一样 但他们是如何创造这样的拉链的呢?我找不到脚本或任何关于如何执行的文档。我还试图通过生成pyc文件并将它们复制到zip中来扩展它,但到目前为止还没有成功 另外,生成的pyc文件(使用python-m compileall创建)与zip文件有点不同。例如,它们内部没有完整的路径作为注释 理想情况下,我会通过pip安装一些软件包,然后将它们重新打包到zip中 先谢谢你 编辑

我的目标是创建或重新绑定一个可嵌入的zip文件,就像pythondl页面“windowsx86-64可嵌入的zip文件”上的一样

但他们是如何创造这样的拉链的呢?我找不到脚本或任何关于如何执行的文档。我还试图通过生成pyc文件并将它们复制到zip中来扩展它,但到目前为止还没有成功

另外,生成的pyc文件(使用python-m compileall创建)与zip文件有点不同。例如,它们内部没有完整的路径作为注释

理想情况下,我会通过pip安装一些软件包,然后将它们重新打包到zip中

先谢谢你

编辑:
我想知道如何创建python36.zip(它位于Windows x86-64可嵌入zip中)

这就是如何做到的,解压缩Python可嵌入zip文件。 它有pythonxx文件。此文件包含目录/zip文件列表,嵌入式python使用这些文件查找模块,即设置sys.path。 例如,我已将3.6嵌入式版本提取到E:\dev文件夹中

PS C:\Users\user2> get-content E:\dev\python-3.6.5-embed-amd64\python36._pth
python36.zip
.
# Uncomment to run site.main() automatically
#import site
sys.path将反映相同的内容

PS C:\Users\user2> python
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] on win32
>>> import sys
>>> sys.path
['E:\\dev\\python-3.6.5-embed-amd64\\python36.zip', 'E:\\dev\\python-3.6.5-embed-amd64']
>>>
现在,我需要做的就是在E:\dev\python-3.6.5-embed-amd64中创建一个新目录或zip文件,其中包含我的所有模块,并将该目录添加到python36.\u pth文件中。
完成所有测试后,我可以压缩文件夹E:\dev\python-3.6.5-embed-amd64,该文件夹可用于部署python以及准备导入的所有必需模块。

提取可嵌入zip文件时,您会发现所有模块实际上都在另一个zip python3x.zip文件中。确定,但是,我如何创建一个新的python36.zip,其中包含额外的*.pyc文件?或者我如何像在python.zip中一样使用相同的“设置/参数”来“编译”py文件?例如,文件(来自zip)“base_events.pyc”是31kb,如果我自己预编译它(来自python安装程序的相同py文件),该文件是38kb(名称是“base_events.cpython-36.pyc"并且里面有更多的注释+里面有一个完整的路径字符串。pythonxx.zip不应该被修改,因为它包含内置的标准库。相反,你需要创建一个具有不同名称的新库。不需要编译或压缩这些文件。你可以将所有模块放在那里,只要所有依赖项都在那里,Python就不会修改不要抱怨。但是如果你真的想编译,你可以使用py_compile或compileall模块。编译整个pip包可能很棘手,因为它包含多个.py文件。对于zip,你可以使用7z或winzip。我已经有了一个可移植的python包和其他包。我的目标是使包更小,减少smal的数量l文件。所以我只是用Lib中的一些py文件创建了一个额外的zip文件,并通过_pth文件引用它,对吗?我现在将测试它…:-)似乎不是所有模块都是zip兼容的。我还使用Jupyter/IPython笔记本电脑,Jupyter可以找到一些模块,也可以找到一些没有。例如,仅当我将“zmq”保留在Lib文件夹中时,Jupyter才能使用它。