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

11

我正在开发一个用Python编写的程序,将由其他几个人使用。他们都已安装了Python,但有几个库是该程序需要导入的。

我希望能够简单地向他们发送Python文件,让他们可以直接运行程序,而不必告诉他们必须安装哪些库,并要求他们手动使用pip安装每一个库。

是否有任何方式可以将我的项目使用到的所有库与我的Python文件一起打包(或者设置安装程序来为他们安装库)?还是我只能给他们一个完整的Python库列表,并让他们手动安装每一个库?

3个回答

6

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)

“需要立即hack的选项”是一些库,可以让您的脚本与shell交互。pexpect是我最喜欢用于自动化shell交互的库。”

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


这不包括软件包中的依赖项,但当您安装此模块时,它们将被安装。 - Vishrant

1
你应该使用virtualenv来管理项目的包。如果这样做,你可以使用pip freeze > requirements.txt将项目的所有依赖项保存下来,requirements.txt文件中将包含运行你的应用所需的所有必要依赖项。将此文件添加到你的仓库中。可以使用requirements.txt中的所有软件包进行安装。
pip install -r requirements.txt

另一个选项是创建一个PyPI包。您可以在此处找到有关此主题的教程。

这需要该软件包也在PyPI上可用。 - ivan_pozdeev
1
requirements.txt 用于锁定版本。它不是用来指定依赖关系的,这是 setup.py 的工作。 - wim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接