如果你将mnist_mlp_cpu.py
和layers_1.py
放置于同一个zip文件中,并希望你的Python代码能够识别这两个文件互相之间的模块,需要确保zip文件内的文件结构能得到正确的处理。有几种方式可以实现这个目标:
使用ZipApp库可以让你创建一个包含代码的自解压zip应用。这种方式在运行时会自动解压到一个临时目录。
在Python 3.5以上的版本,可以使用以下步骤:
mnist_mlp_cpu.py
和layers_1.py
等)放到一个zip文件中。import sys
# 压缩成ZipApp
import zipfile
import os
source_dir = '/path/to/your/code' # 源代码所在目录
target_zip = 'mnist_mlp_cpu_app.pyz' # 创建的目标ZipApp文件名
with zipfile.ZipFile(target_zip, 'w') as zf:
root_len = len(source_dir.rstrip('/\\'))
for dirname, dirs, files in os.walk(source_dir):
for filename in files:
file_path = os.path.join(dirname, filename)
zf.write(file_path, file_path[root_len:])
zf.writestr('__main__.py', 'import sys; from zipfile import ZipFile; zf=ZipFile(__file__); exec(zf.read(\'mnist_mlp_cpu.py\'))')
print(f"Compiled {target_zip} successfully.")
以上脚本会创建一个名为mnist_mlp_cpu_app.pyz
的ZipApp文件。
如果你不计划使用ZipApp,而希望手动设置可以在zip内识别模块的设置,请确保做到以下几点:
你可以将Python代码和相关模块放入一个zip文件中,然后更改你的主运行脚本或命令行参数,使其指向该zip文件。例如:
import sys
sys.path.insert(0, '/path/to/zipfile.zip') # 添加zip文件路径到系统路径首位
from mnist_mlp_cpu import main # 假设mnist_mlp_cpu.py文件有一个main函数作为入口点
if __name__ == "__main__":
main()
注意:/path/to/zipfile.zip
要替换为你的zip文件实际存储的位置。
最简单的一种方法是在运行之前将mnist_mlp_cpu.py
和layers_1.py
从zip中解压到当前工作目录中,或提取出来放在Python可以访问的目录下。这种方法不需要特别的配置,只需要在运行前进行简单的解压操作即可。
以上便是实现mnist_mlp_cpu.py
在同一zip下可以识别layers_1.py
的方法。不同方法的选择取决于你的具体需求和运行环境。在使用过程中,你可能需要根据具体情况调整代码和路径设置。