是否可以将python及其必要的库导出到独立于环境的文件中?
我有一个python脚本,它使用keras和tensorflow库,这在每台机器上设置都非常耗时。是否有可能将我的python脚本以及keras和tensorflow库导出到像java projects - > .jar这样的文件中,这样我就不需要每次移动到新机器时都设置库了?是否可以将python及其必要的库导出到独立于环境的文件中?
不是文件,而是一个文件夹。使用virtualenv(https://virtualenv.pypa.io/en/stable/)。你可以指定一个Python版本,它会在文件夹中安装它:
virtualenv -p /usr/bin/python2.6 <path/to/new/virtualenv/>
然后可以使用画中画安装软件包和模块的具体环境,然后压缩该文件夹上下左右移动。
Python 3包含a tool called zipapp
,它允许您从Python项目中构建单个存档,捆绑在所有(或某些)依赖项中。 该工具仅与Python 3捆绑在一起,但生成的归档文件可以与您所定位的任何版本的Python> = 2.6一起使用。
假如你有src/
你的所有的源文件,包括提到的张量流动图书馆:
$ python3 -m zipapp -o yourapp.pyz -m "your.entry.point.module:main_function" src/
的-m
标志允许你指定一个模块里面的函数,用:
separed,这将在运行.pyz
文件时执行。关于运行它,这只是一个问题:
$ python ./yourapp.pyz
再次,您将需要Python> = 2.6才能使其工作。
如果你的目标UNIX平台上,你还可以添加一个家当:
$ echo "#! /usr/bin/python" > yourapp2.pyz
$ cat yourapp.pyz >> yourapp2.pyz
$ chmod +x yourapp2.pyz
,这样就可以运行该文件:
$ ./yourapp2.pyz
作为一个方面说明,一个.pyz
是什么多于.zip
文件。你可以自己创建一个,不需要zipapp
,只需在顶层包含一个__main__.py
文件。这将是你的包的入口点。
这在一般 有关部署Python应用程序,这是不平凡的,特别是对于复杂的项目,但如果唯一的问题是处理库安装常见的解决方案是:
包括在你的项目的文本文件(通常需求。TXT),其中包括磁带库,并且需要
可以使用
pip freeze > requirements.txt
,但你或许应该删除已安装在过去的这一点,但实际上并不在目标机器上运行使用
库版本:
pip install -r requirements.txt
建议使用虚拟env设置环境,但是使用虚拟env从一台机器复制它作为一个diffe租一个不是很安全或可扩展(只会用于相同的操作系统,相同的Python版本和相同的目录结构)
'.jar'是正常的'.zip'文件。 – furas
@furas我想你是在说'.tar'? –
@BingGan,它实际上是一个'zip'文件。 –