如果最终用户没有所需的库怎么办?

时间:2019-05-02 13:17:28

标签: python python-3.x

我的Python项目使用各种类型的库。如果最终用户没有一个或任何一个协议,该怎么办?

是否应该弹出一个窗口,通知他/她要在他/她的环境中下载哪个软件包和版本?还是我应该在项目中包含这些库?

该怎么做?

5 个答案:

答案 0 :(得分:14)

无论您的项目是什么,您都可以尝试将其制作为最终用户将要安装的python软件包。运作方式是

在软件包的根目录中,将包含一个setup.py。您可以在此文件中包含将在最终用户安装软件包时与软件包一起安装的需求/依赖项列表(install_requires键)。

最终用户可以使用pip安装您的软件包,例如

pip install YourPackage

,将首先安装setup.py中列出的所有依赖项。

此外,正如@Devesh Kumar Singhhis comment中指出的那样,您还可以包含requirements.txt文件。然后,用户可以将该文件与

一起使用进行安装
pip install -r requirements.txt YourPackage

请参见this guide for building a python packagesetuptools documentation

答案 1 :(得分:5)

要向其他用户显示您的项目需要哪些库,您有多种选择。所有选项都是某种文件,说明该项目需要哪些库。

我知道的文件

答案 2 :(得分:4)

另一个选项:您可以使用PyInstaller将Python应用程序冻结(打包)成独立的可执行文件,在Windows,GNU / Linux,Mac OS X,FreeBSD,Solaris和AIX下。

PyInstaller Quickstart

这对我来说非常有效。实际上,您不必担心最终用户是否安装了Python。

答案 3 :(得分:1)

在这里将python项目打包到模块中非常方便modules 我们包含一个requirements.txt文件,其中包含该python库所需的所有python模块要求,并在安装模块时自动安装它们。

Structuring your project

是如何设置可分发模块的很好的入门

答案 4 :(得分:1)

所以你做了一个包裹。现在,您将要共享它。接下来是什么?

开发人员

目标-进行分发(也称为“打包”)共享

序言

您现在正在包装包装您的包装,并希望分发它。软件包主要有两种:

  • 应用部署服务器,github,网站等资源。 CLI
  • 发布通常通过twine
  • 将源代码分发(sdist)或二进制文件(例如wheel)发布到PyPI

传统方式

分发中可能包含几个文件,但主要是以下文件:

  • 来源:您的代码
  • setup.py:指定元数据和进行sdist所需的依赖项。
  • requirements.txt:依赖项列表

当代方式

使用pyproject.toml指定用于创建sdist或二进制文件的工具:

用于创建+部署/发布程序包的现代工具包括:

  1. pipenv:制作一个包并替换requirements.txt(PyPA推荐)
    • 开发:> pipenv install <dependency>> pipenv install
    • 发布:> pipenv -e . + twine
  2. poetry:制作一个程序包并发布到PyPI
    • 开发> poetry add <dependency>> poetry install
    • 发布:> poetry publish
  3. flit:制作一个程序包并发布到PyPI
    • 开发:> flit install
    • 发布:> flit publish

前两个选项具有创建干净的虚拟环境并使用锁定文件安全安装依赖项的功能。我鼓励稍后探索这些较新的选项,因为它们通过消除setup.pysetuptools消除了很多包装难题。


用户

目标-获取一个软件包并安装依赖项

传统方式

应用程序具有多种部署方法,例如将您的应用上传到托管服务,例如heroku,DigitalOcean等。用户可以通过网站,CLI或更多工具间接与您的应用交互。

库通常上载到PyPI。用户通常可以从此处使用pip安装软件包,而与软件包的制作方式无关:

  • > pip install <package>(推荐)
  • > pip install <packatge> -r requirements(显式,可选)

这些命令行调用将从PyPI获取分发,安装软件包和指定的依赖项。

当代方式

以下是pip的一些替代方法:

  1. pipx:在隔离的环境中“安全”安装软件包
    • > pipx install <package>

另请参见

  • Official docs关于PyPA发布的软件包
  • Tutorial关于如何打包Python代码
  • Podcastpyproject.toml和现代包装工具采访B. Cannon