如何根据需要从python脚本自动安装所需的包?

2024-04-27 00:09:40 发布

您现在位置:Python中文网/ 问答频道 /正文

在python或linux中是否有什么基本上指示系统“安装任何必要的东西”。基本上,我觉得为我工作的每个新脚本/系统/服务器安装python包很烦人。每次我最后做一个sudo pip或apt-get或dnf无论如何。为什么不在脚本中自动执行呢。如果出现“找不到包”错误,请将库名称传递给install语句。这是吗?

注:我知道docker存在,但我是在python/script级别或直接系统级别上讨论,纯粹是为了执行目的。

谢谢


Tags: installpipdocker服务器脚本名称getlinux
3条回答

在新计算机上安装自定义项目时,可以使用setuptools自动安装依赖项。如果您只想安装几个PyPI包,那么需求文件就可以正常工作。

Here是两者的一个很好的比较。从同一个链接可以看到,如果项目有两个依赖包AB,那么在setp.py文件中只需包含一行

install_requires=[
   'A',
   'B'
] 

当然,setuptools可以做得更多。您可以包括外部库(例如C文件)、非PyPI依赖项等的设置。documentation提供了有关安装依赖项的详细概述。在开始使用python打包时,还有一个非常好的tutorial

从他们的示例来看,典型的setup.py文件如下所示。

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)

总之,开始使用setuptools非常简单。这个包可以使您很容易地将代码迁移到新机器上。

pip3安装pipreqs

pip3安装-U——用户pipreqs

mv requirements.txt  requirements.txt.orig
pipreqs --force ./

以及

cat requirements.txt

Keras==2.2.4 
scipy==1.3.0 
numba==0.44.1 
imgaug==0.2.9 
opencv_python==4.1.0.25

但是,有些模块需要二进制编译(您没有库),有些模块可以由系统包管理器以不同的名称安装。

我知道的最好的方法是,创建一个文件requirements.txt列出其中的所有包名,并使用pip安装它

pip install -r requirements.txt

示例requirements.txt

BeautifulSoup==3.2.0
Django==1.3
Fabric==1.2.0
Jinja2==2.5.5
PyYAML==3.09
Pygments==1.4
SQLAlchemy==0.7.1
South==0.7.3
amqplib==0.6.1
anyjson==0.3
...

相关问题 更多 >