如何使用 requirements.txt 在 python 项目中安装所有依赖项
Posted
技术标签:
【中文标题】如何使用 requirements.txt 在 python 项目中安装所有依赖项【英文标题】:How to use requirements.txt to install all dependencies in a python project 【发布时间】:2017-05-18 09:03:49 【问题描述】:我是 python 新手。最近我有一个用python编写的项目,它需要一些安装。我运行以下命令进行安装,但出现错误。
# pip install requirements.txt
Collecting requirements.txt
Could not find a version that satisfies the requirement requirements.txt (from versions: )
No matching distribution found for requirements.txt
我在谷歌上搜索并找到了这个链接http://***.com/questions/28167987/python-pip-trouble-installing-from-requirements-txt
,但我不太明白那个帖子中的解决方案。
下面是我的 requirements.txt 文件:
# cat requirements.txt
ordereddict==1.1
argparse==1.2.1
python-dateutil==2.2
matplotlib==1.3.1
nose==1.3.0
numpy==1.8.0
pymongo==3.3.0
psutil>=2.0
有没有一种简单的方法可以在这个 python 项目中安装所有必需的依赖项?
EDIT1
下面是pip3 install -r requirements.txt
的输出。
# pip3 install -r requirements.txt
Requirement already satisfied: ordereddict==1.1 in /usr/local/lib/python3.5/dist-packages (from -r requirements.txt (line 1))
Collecting argparse==1.2.1 (from -r requirements.txt (line 2))
Using cached argparse-1.2.1.tar.gz
Collecting python-dateutil==2.2 (from -r requirements.txt (line 3))
Using cached python-dateutil-2.2.tar.gz
Collecting matplotlib==1.3.1 (from -r requirements.txt (line 4))
Using cached matplotlib-1.3.1.tar.gz
Complete output from command python setup.py egg_info:
============================================================================
Edit setup.cfg to change the build options
BUILDING MATPLOTLIB
matplotlib: yes [1.3.1]
python: yes [3.5.2 (default, Nov 17 2016, 17:05:23) [GCC
5.4.0 20160609]]
platform: yes [linux]
REQUIRED DEPENDENCIES AND EXTENSIONS
numpy: yes [version 1.11.3]
dateutil: yes [using dateutil version 2.6.0]
tornado: yes [tornado was not found. It is required for the
WebAgg backend. pip/easy_install may attempt to
install it after matplotlib.]
pyparsing: yes [using pyparsing version 2.1.10]
pycxx: yes [Official versions of PyCXX are not compatible
with Python 3.x. Using local copy]
libagg: yes [pkg-config information for 'libagg' could not
be found. Using local copy.]
freetype: no [The C/C++ header for freetype2 (ft2build.h)
could not be found. You may need to install the
development package.]
png: yes [pkg-config information for 'libpng' could not
be found. Using unknown version.]
OPTIONAL SUBPACKAGES
sample_data: yes [installing]
toolkits: yes [installing]
tests: yes [using nose version 1.3.7]
OPTIONAL BACKEND EXTENSIONS
macosx: no [Mac OS-X only]
qt4agg: no [PyQt4 not found]
gtk3agg: no [gtk3agg backend does not work on Python 3]
gtk3cairo: no [Requires cairo to be installed.]
gtkagg: no [Requires pygtk]
tkagg: no [TKAgg requires Tkinter.]
wxagg: no [requires wxPython]
gtk: no [Requires pygtk]
agg: yes [installing]
cairo: no [cairo not found]
windowing: no [Microsoft Windows only]
OPTIONAL LATEX DEPENDENCIES
dvipng: no
ghostscript: no
latex: no
pdftops: no
============================================================================
* The following required packages can not be built:
* freetype
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-don4ne_2/matplotlib/
我已经安装了libfreetype6-dev
,但是 pip 命令仍然报告缺少这个依赖。
# apt-get install libfreetype6-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
libfreetype6-dev is already the newest version (2.6.1-0.1ubuntu2).
0 upgraded, 0 newly installed, 0 to remove and 4 not upgraded.
【问题讨论】:
pip install -r requirements.txt
我已更新输出以包含带有 -r 标志的输出,但仍无法安装。
所以现在阅读新的输出并思考 - 不要等我们。
在输出中你看到它需要freetype
。它不是python模块而是系统包。您必须使用 ie 安装它。 apt-get
Ubuntu/Mint
为什么是-r
,因为它与file
无关??
【参考方案1】:
如果您使用的是 Linux 操作系统:
-
从
requirements.txt
中删除matplotlib==1.3.1
尝试使用sudo apt-get install python-matplotlib
安装
运行 pip install -r requirements.txt
(Python 2) 或 pip3 install -r requirements.txt
(Python 3)
pip freeze > requirements.txt
如果您使用的是 Windows 操作系统:
python -m pip install -U pip setuptools
python -m pip install matplotlib
【讨论】:
嗨 Nilesh,欢迎来到 Stack Overflow。将来,请说明您在回答中给出的命令是做什么的,不要只是告诉人们运行命令。 谢谢@Nilesh。你的意思是把 4. 放在 3. 之前吗? 否 @Anupam,与第 1 步一样,我们从 requirements.txt 中删除了“matplotlib”,在第 4 步中,我们正在使用新安装的包更新 requirements.txt 以供将来使用。 step3 用于从文件中安装其他要求。【参考方案2】:pip install -r requirements.txt
为python 2.x
pip3 install -r requirements.txt
for python 3.x
(如果安装了多个版本)
【讨论】:
我都试过了,但还是失败了。我已经发布了这个命令的输出。 我认为安装 MATPLOTLIB 时缺少必需的依赖项“freetype”。尝试安装依赖项并再次运行 pip install -r requirements.txt。pip
不会处理系统级别的依赖关系。您必须先apt-get install libfreetype6-dev
,然后才能继续。 (它甚至在你的输出中这么说。下次尝试略读它以查找此类错误,通常构建输出非常详细)【参考方案3】:
python -m pip install -r requirements.txt
参考:How to install packages using pip according to the requirements.txt file from a local directory?
【讨论】:
【参考方案4】:(摘自我的评论)
pip
不会处理系统级别的依赖关系。您必须先apt-get install libfreetype6-dev
才能继续。 (它甚至在你的输出中这么说。下次尝试略读它以查找此类错误,通常构建输出非常详细)
【讨论】:
我已经安装了 libfreetype6-dev。但是pip还是报这个错误。 你看到这个错误了吗? github.com/matplotlib/matplotlib/issues/3029【参考方案5】:Python 3:
pip3 install -r requirements.txt
Python 2:
pip install -r requirements.txt
获取虚拟环境或整个系统的所有依赖项:
pip freeze
将所有依赖推送到 requirements.txt (Linux):
pip freeze > requirements.txt
【讨论】:
【参考方案6】:如果您想在需求文件中安装所有依赖项,例如 Node.js 项目中的 npm install
在 python 中运行以下命令:
pip3 install -r ./requirements.txt
您可以使用pip
或pip3
两者都可以工作
【讨论】:
【参考方案7】:如果您使用 Linux 作为操作系统,那么您可以按照以下步骤操作:-
首先,从requirements.txt
中删除matplotlib==1.3.1
然后尝试安装它
sudo apt-get install python-matplotlib
运行 pip install -r requirements.txt
(Python 2)
或pip3 install -r requirements.txt
(Python 3)
pip freeze > requirements.txt
如果您使用 Windows 作为操作系统,请使用以下步骤:
python -m pip install -U pip setuptools
python -m pip install matplotlib
看看这个install all dependencies in a python project page.
【讨论】:
以上是关于如何使用 requirements.txt 在 python 项目中安装所有依赖项的主要内容,如果未能解决你的问题,请参考以下文章
如何在 requirements.txt 中安装 git 源?
如何使用 requirements.txt 在 python 项目中安装所有依赖项