我有一个使用keras和tensorflow库的Python脚本,每次在不同机器上设置这些库都非常耗时。是否可以将我的Python脚本和keras和tensorflow库导出到像Java项目中的.jar文件那样的文件中,以便于我不需要每次移动到新机器时重新设置库?
我有一个使用keras和tensorflow库的Python脚本,每次在不同机器上设置这些库都非常耗时。是否可以将我的Python脚本和keras和tensorflow库导出到像Java项目中的.jar文件那样的文件中,以便于我不需要每次移动到新机器时重新设置库?
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
的 .pyz
文件,只需在顶层包含一个 __main__.py
文件,这将成为你的捆绑入口点。在项目中包含一个文本文件(通常为requirements.txt),其中包括您所需的库和版本
你可以使用
pip freeze > requirements.txt
但你应该删除过去安装但实际未使用的库。
在目标机器上运行:
pip install -r requirements.txt
建议使用虚拟环境来设置环境,但是将一个机器上的虚拟环境复制到另一个机器并直接使用并不安全或可扩展(仅适用于相同的操作系统、相同的Python版本和相同的目录结构)。
不是文件,而是文件夹。使用virtualenv (https://virtualenv.pypa.io/en/stable/)。您可以指定Python版本,并将其安装在文件夹中:
virtualenv -p /usr/bin/python2.6 <path/to/new/virtualenv/>
.jar
是普通的.zip
文件。 - furasjava -jar project.jar
一样执行python -something project.xxx
。 - Bing Gan.dll
或.so
文件,因此在Windows上创建的文件只能在Windows上运行(Linux同理)。 - furas