是否可以将 python 及其必要的库导出到独立于环境的文件中?

Bin*_*Gan 5 python python-3.x keras tensorflow

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

Ste*_*ppo 6

Python 3 包含一个名为的工具zipapp,它允许您从 Python 项目中构建单个档案,捆绑所有(或部分)依赖项。该工具仅与 Python 3 捆绑在一起,但生成的存档将适用于您所针对的任何 Python >= 2.6 版本

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

$ python3 -m zipapp -o yourapp.pyz -m "your.entry.point.module:main_function" src/
Run Code Online (Sandbox Code Playgroud)

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

$ python ./yourapp.pyz
Run Code Online (Sandbox Code Playgroud)

同样,您将需要 Python >= 2.6 才能使其工作。

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

$ echo "#! /usr/bin/python" > yourapp2.pyz
$ cat yourapp.pyz >> yourapp2.pyz
$ chmod +x yourapp2.pyz
Run Code Online (Sandbox Code Playgroud)

以便您可以将文件运行为:

$ ./yourapp2.pyz
Run Code Online (Sandbox Code Playgroud)

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


小智 2

不是文件,而是文件夹。使用 virtualenv ( https://virtualenv.pypa.io/en/stable/ )。您可以指定 python 版本,它将安装在文件夹中:

virtualenv -p /usr/bin/python2.6 <path/to/new/virtualenv/>
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用 pip 为该特定环境安装软件包和模块,然后压缩该文件夹并移动它。