如何分发包含外部库的python3代码

时间:2019-10-17 14:04:35

标签: python-3.x deployment pycharm

我在python3中编写了一个小脚本,该脚本使用numpy,matplotlib和linux计算机中pyCharm CE使用的其他库。

我用pyCharm编码并创建了虚拟环境。 由于依赖关系,该脚本仅在pyCharm内部有效。 我的一个朋友想在Windows计算机中使用我的脚本。我不确定他是否已经安装了python。

如何在pyCharm外部运行脚本,或者如何激活pyCharm创建的虚拟环境来运行脚本?

我如何创建一个程序包或一些东西来将该脚本提供给我的朋友或其他任何人以自由使用它?

谢谢

1 个答案:

答案 0 :(得分:0)

一种要求您的朋友在其系统中安装python3.xpip的方法。同时,您创建一个requirements.txt,其中包含需要安装的库及其格式的版本。

dj-database-url==0.5.0
Django==2.2.5
pytz==2019.2
sqlparse==0.3.0
psycopg2>=2.7,<3.0

然后请您的朋友运行pip install -r <path to requirements.txt>。这将安装所有必需的库,并且如果没有基于OS的依赖项,则该项目应运行正常。

在具有基于OS的依赖的大型项目中,另一种实现方法是使用containerization工具,例如docker。容器化使您可以在其他计算机上运行项目,这些项目取决于计算机中可用/安装的各种程序包或环境。

例如:想象我创建了一个基于python的应用程序,该应用程序依赖于我的Debian机器中的多个软件包。我可以使用docker image作为基础来构建python3.x,并在image的时间内将所需的软件包安装在build内。这样做很简单。这样做之后,我可以将image推送到docker hub,这是一个存储docker images的注册表。请注意,此处存储的images是公开可用的。如果您对此感到担心,可以使用专用的AWS ECR注册表来存储您的images。一旦按下image,任何有权使用image的人都可以拉动它并旋转containercontainerimage的实例,它可以运行image构建的应用程序/脚本/任何操作。为了能够加速containers,他们需要在自己的计算机上安装docker

通过这种方式,您可以共享您的项目,并使该项目在任何人的计算机上运行,​​而不会带来任何麻烦。他们不需要在计算机中安装docker以外的任何东西。与Virtual Machine docker containers不同,您的计算机并不繁琐。

在使用docker的情况下,您可以以image为基础构建python3.x(很像ISO映像),并安装所有必需的软件包,例如numpymatplotlib和其他库,然后将项目运行所需的脚本复制到image中,并将其推送到docker hub或您选择的私有注册表中。然后,您可以授予朋友访问image的权限。您的朋友将需要在自己的计算机上安装Docker for Windows才能使用您提供给他的图像旋转container。此容器将运行您的脚本,因为在构建映像本身时,它将在其中安装所有必需的依赖项。

有关Docker的更多信息:https://www.docker.com/