python - 是否可以将 python 及其必要的库导出到与环境无关的文件中?

标签 python python-3.x tensorflow keras

我有一个使用 keras 和 tensorflow 库的 python 脚本,在每台机器上设置它们都非常耗时。是否可以将我的 python 脚本以及 keras 和 tensorflow 库导出到一个文件中,如 java 项目 --> .jar 这样我就不需要在每次移动到新机器时都设置这些库?

最佳答案

Python 3 包括 a tool called zipapp这允许您从 Python 项目构建单个存档,捆绑所有(或部分)依赖项。 该工具仅与 Python 3 捆绑在一起,但生成的存档将适用于您定位的任何版本的 Python >= 2.6

假设您在 src/ 中拥有所有源文件,包括提到的 Tensor Flow 库:

$ python3 -m zipapp -o yourapp.pyz -m "your.entry.point.module:main_function" src/

-m 标志允许您在其中指定一个模块和一个函数,用 : 分隔,当您运行 时将执行它们。 pyz 文件。关于运行它,这只是一个问题:

$ python ./yourapp.pyz

同样,您需要 Python >= 2.6 才能正常工作。

如果您的目标是 unix 平台,您还可以添加一个 shebang:

$ echo "#! /usr/bin/python" > yourapp2.pyz
$ cat yourapp.pyz >> yourapp2.pyz
$ chmod +x yourapp2.pyz

这样您就可以将文件运行为:

$ ./yourapp2.pyz

作为旁注,.pyz 只不过是一个 .zip 文件。您可以自己创建一个没有 zipapp 的文件,只需在顶层包含一个 __main__.py 文件。这将是您的包的入口点。

关于python - 是否可以将 python 及其必要的库导出到与环境无关的文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41818387/

相关文章:

python - 如何使类 JSON 可序列化

python - Scrapy shell 不返回任何东西

python - BGR在OpenCV中的值(value)是什么?

python-3.x - AWS Glue - 不知道如何将 NullType 保存到 REDSHIFT

python - OS X 10.8.5 上的 Tensorflow 导入错误预计在

python - 如何使用环境模块文件(tcl 脚本)加载 virtualenv?

python - Canvas 更新变慢(可能需要释放一些对象)

python - .join 在 python 中可能存在空队列

python - 在内存中序列化和反序列化 Tensorflow 模型并继续训练

python - 喀拉斯 ZeroDivisionError : integer division or modulo by zero