如何在我的python脚本中包含一个pip安装模块?

时间:2017-12-07 21:54:37

标签: python python-module end-user

我在Python 3.6中编写了一个使用模块pycryptodome的加密程序,特别是这些导入:

from Crypto.Cipher import AES
from Crypto.Hash import SHA256
from Crypto.Random import get_random_bytes

该程序有效,但如果没有用户自己安装pycryptodome模块,则无法使用该程序。

有没有办法以某种方式包含该软件包,还是可以创建“第一次安装”来为最终用户安装它?

1 个答案:

答案 0 :(得分:0)

简短回答 - 正如评论中已经提到的那样 - 您需要打包脚本。

答案很长 - 我以前第一次去过那里 - 这很烦人。他们打包Python模块和脚本的方式不断发展,并不是所有可用的文档都保持最新。您可以轻松地阅读最近的文档,这些文档在阅读时已经存在缺陷(即已过时)。

最简单的方法是pip的简单文件,它描述了项目的依赖关系。它被称为requirements.txt。可以找到最新信息here

如果这还不够,您必须打包您的应用程序。可以找到一个很好但很少维护和稍微过时的概述/介绍here。这对一开始有好处,但不要试着跟着它去!可以找到另一本通常引用的初学者手册here。阅读它以获得基本的理解,不要试着遵循它。

到此为止,是时候阅读"What the Hell? -- A Journey Through the Nine Circles of Python Packing"了。它提供了许多实用的建议。最实用的:看看其他项目是如何做到这一点并复制粘贴它......嗯......从中学习。

如果你现在不害怕,我实际上可以推荐查看Python模块模板。我所知道的最好的一个是"Cookiecutter PyPackage"。其维护良好的文档可用here。如果您学习了Python打包的基础知识,那么它是一种快速可靠的方法,可以创建打包代码所需的所有文件和基础结构。

荣誉奖:有一些工具可以简化整个过程。我的列表中的第一位也已在评论中提及PyInstallermanual)。通常提到的另一个工具(适用于Windows)是py2exe(没有最新的文档,AFAIK)。另一个崭露头角且前途无量(但尚未投入生产?)的工具是Briefcasedocumentation)。这些更多,但他们都有自己的问题。你很有可能最终阅读上述文献,试图理解这些问题......