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

How to include library dependencies with a python project?

我正在开发一个程序,其他人将使用这个程序,用Python制作。它们都安装了python,但是,这个程序从中导入了几个库。

理想情况下,我希望能够简单地将python文件发送给他们,并且他们能够运行它,而不必告诉他们必须安装的每个库,以及作为他们使用pip手动获取每个库的工具。

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


这是Python打包教程的主题。

简而言之,您将它们作为install_requires参数传递给setuptools.setup()

然后,您可以生成多种格式的包,包括wheel、egg,甚至是Windows Installer包。

使用标准的打包基础结构还将使您能够轻松地进行版本管理。


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

1
pip install -r requirements.txt

另一个选项是创建一个PYPI包。你可以在这里找到关于这个主题的教程。


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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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='[email protected]',
  license='MIT',
  packages=['funniest'],
  install_requires=[
      'markdown',
  ],
  zip_safe=False)

needit-now-hack选项是一些lib,允许脚本与shell交互。pexpect是我最喜欢的自动化shell交互的工具。

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