如何在python项目中包含库依赖项?

时间:2017-07-12 10:04:35

标签: python libraries

我正在研究一些其他人将要使用的程序,用Python制作。它们都安装了python,但是,这个程序有几个库。

我希望能够简单地向他们发送Python文件并且能够只运行它,而不必告诉他们每个必须安装的库,并使用pip手动获取每个库。

有没有什么方法可以将我的项目使用的所有库都包含在我的Python文件中(或者可能设置一个安装它的安装程序)?或者我只需要给他们一个他们必须安装的python库的完整列表,并让他们手动完成每个库?

3 个答案:

答案 0 :(得分:4)

这是Python packaging tutorial的主题。

简而言之,you pass them as install_requires parametersetuptools.setup()

然后,您可以生成多种格式的包,包括wheel,egg,甚至是Windows安装程序包。

使用标准打包基础架构还可以轻松实现版本管理。

答案 1 :(得分:2)

您应该使用virtualenv来管理项目的包。如果这样做,则可以pip freeze > requirements.txt保存项目的所有依赖项。在此requirements.txt将包含运行您的应用程序的所有必要要求之后。将此文件添加到您的存储库。来自requirements.txt的所有包都可以随

一起安装
pip install -r requirements.txt

另一个选项是创建一个PyPI包。您可以找到关于此主题here

的教程

答案 2 :(得分:2)

您可以在setup.py中构建程序包并指定依赖项。这是正确的方法

http://python-packaging.readthedocs.io/en/latest/dependencies.html

from setuptools import setup

setup(name='funniest',
  version='0.1',
  description='The funniest joke in the world',
  url='http://github.com/storborg/funniest',
  author='Flying Circus',
  author_email='flyingcircus@example.com',
  license='MIT',
  packages=['funniest'],
  install_requires=[
      'markdown',
  ],
  zip_safe=False)

现在需要它的选项是一些让你的脚本与shell交互的库。 pexpect是自动化shell交互的最爱。

https://pexpect.readthedocs.io/en/stable/