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

Dee*_*pak 3 python linux ubuntu pip fedora

在python或linux中有什么基本上指示系统"安装任何必要的东西".基本上我发现为我工作的每个新脚本/系统/服务器安装python包很烦人.每当我最终做一个sudo pip或apt-get或dnf时.为什么不在脚本本身内自动化.如果发现"找不到包"错误,请将库名传递给install语句.这有吗?

PS:我知道docker存在,但我正在谈论python /脚本级别或直接系统级别纯粹的执行目的.

谢谢

Fra*_*urt 42

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

让我们假设您的 Python 脚本是example.py

import os
import time
import sys
import fnmatch
import requests
import urllib.request
from bs4 import BeautifulSoup
from multiprocessing.dummy import Pool as ThreadPool 
print('test')
Run Code Online (Sandbox Code Playgroud)

您可以使用pipreqsrequirements.txt根据importPython 脚本包含的语句自动生成文件。要使用pipreqs,假设您example.py位于所在目录中:

pip install pipreqs
pipreqs .
Run Code Online (Sandbox Code Playgroud)

它将生成以下requirements.txt文件:

requests==2.23.0
beautifulsoup4==4.9.1
Run Code Online (Sandbox Code Playgroud)

您可以安装:

pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案! (2认同)

bha*_*nsa 6

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

pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

示例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
...
Run Code Online (Sandbox Code Playgroud)

  • 如何包含`setup.py`文件?https://setuptools.readthedocs.io/en/latest/setuptools.html (3认同)