python或linux中有什么东西基本上指示系统安装必要的东西"。基本上我发现为我工作的每个新脚本/系统/服务器安装python包很烦人。每当我最终做一个sudo pip或apt-get或dnf时。为什么不在脚本本身内自动化。如果找不到包裹,如果出现错误,请将库名称传递给install语句。这是吗?
PS:我知道docker存在,但我正在谈论python /脚本级别或直接系统级别,纯粹是为了执行目的。
由于
答案 0 :(得分:6)
我知道的最好方法是,创建一个文件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
...
答案 1 :(得分:3)
如何根据需要自动从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')
您可以使用pipreqs根据Python脚本包含的requirements.txt
语句自动生成import
文件。要使用pipreqs
,请假设您位于example.py
所在的目录中:
pip install pipreqs
pipreqs .
它将生成以下requirements.txt
文件:
requests==2.23.0
beautifulsoup4==4.9.1
您可以通过以下方式安装:
pip install -r requirements.txt
答案 2 :(得分:1)
在新计算机上安装自定义项目时,可以使用setuptools自动安装依赖项。如果您只想安装一些PyPI
软件包,那么需求文件就可以正常运行。
Here两者之间的比较很好。在同一个链接中,您可以看到,如果您的项目有两个依赖包A
和B
,那么您在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
非常简单。这个包可以很容易地将代码迁移到新机器。
答案 3 :(得分:0)
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
但是,有些模块需要二进制编译(您没有库),有些可以由系统软件包管理器以不同的名称安装。