从conda创建pip3的requirements.txt

ITA*_*ITA 19 pip python-3.x conda

嗨,我通常使用conda来管理我的环境,但是现在我在一个项目中需要比笔记本电脑更大的功率。因此,我尝试使用大学的工作站,该工作站具有新的Intel Xeon。但是我没有管理员权限,并且工作站也没有conda,因此我不得不使用virtualenv和pip3。

如何requirements.txt从conda 生成可与pip3and 一起使用的from venv

conda list -e > requirements.txt
Run Code Online (Sandbox Code Playgroud)

不会生成兼容文件:

= is not a valid operator. Did you mean == ?
Run Code Online (Sandbox Code Playgroud)

conda输出是:

# This file may be used to create an environment using:
# $ conda create --name <env> --file <this file>
# platform: osx-64
certifi=2016.2.28=py36_0
cycler=0.10.0=py36_0
freetype=2.5.5=2
icu=54.1=0
libpng=1.6.30=1
matplotlib=2.0.2=np113py36_0
mkl=2017.0.3=0
numpy=1.13.1=py36_0
openssl=1.0.2l=0
pip=9.0.1=py36_1
pyparsing=2.2.0=py36_0
pyqt=5.6.0=py36_2
python=3.6.2=0
python-dateutil=2.6.1=py36_0
pytz=2017.2=py36_0
qt=5.6.2=2
readline=6.2=2
scikit-learn=0.19.0=np113py36_0
scipy=0.19.1=np113py36_0
setuptools=36.4.0=py36_1
sip=4.18=py36_0
six=1.10.0=py36_0
sqlite=3.13.0=0
tk=8.5.18=0
wheel=0.29.0=py36_0
xz=5.2.3=0
zlib=1.2.11=0
Run Code Online (Sandbox Code Playgroud)

我以为我会手动将所有更改=为,===conda输出中有两个。更改哪一个?当然有更简单的方法吗?

编辑:pip freeze > requirements.txt给出:

certifi==2016.2.28
cycler==0.10.0
matplotlib==2.0.2
matplotlib-venn==0.11.5
numpy==1.13.1
pyparsing==2.2.0
python-dateutil==2.6.1
pytz==2017.2
scikit-learn==0.19.0
scipy==0.19.1
six==1.10.0
Run Code Online (Sandbox Code Playgroud)

rmw*_*zel 136

正如顶部的注释所示,输出

conda list -e > requirements.txt

可用于创建conda虚拟环境

conda create --name <env> --file requirements.txt

但此输出的格式不正确pip

如果您想要一个可用于创建pip虚拟环境的文件(即requirements.txt格式正确的文件),您可以pipconda环境中安装,请使用 pip 创建requirements.txt.

conda activate <env>
conda install pip
pip freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)

然后使用结果requirements.txt创建一个pip虚拟环境:

python3 -m venv env
source env/bin/activate
pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

当我对此进行测试时,输出中的包并不相同(pip包括较少的包),但足以设置功能环境。

  • 这是最好的答案,应该是公认的答案,因为它提供了用于完成/回答原始 SO 问题的特定命令。 (11认同)
  • 对于关注此线程并在“requirements.txt”中获取奇怪路径引用的人,请改用“pip list --format=freeze &gt;requirements.txt”。参考:/sf/answers/4402035081/ (11认同)
  • 如果您使用 conda,最好的选择是使用“conda env export &gt;environment.yml”,提交您的environment.yml,然后“conda env create -fenvironment.yml”。 (7认同)
  • @JohnnyUtah 小心点。创建一个完全空的环境不会包含“pip”,因此您的建议最终将在预期目标环境“外部”安装所有这些软件包。此外,OP 显然是在询问是否要迁移到一个没有 Conda 的系统,因此转向“pip”和“venv”。 (2认同)
  • 啊,好点@merv。您可以在创建并激活 Conda 环境之后、运行“pip install -rrequirements.txt”之前显式安装“pip”吗? (2认同)
  • @JohnnyUtah 当然,或者只是用 create 指定它: `condo create -n foo python=3.8 pip` 或 [使用像这样的 YAML](/sf/answers/4133936411/) (没有 `蟒蛇`)。 (2认同)

小智 19

在 conda 环境中,只需调用

pip freeze
Run Code Online (Sandbox Code Playgroud)

我有:

ipykernel @ file:///C:/ci/ipykernel_1607454116140/work/dist/ipykernel-5.3.4-py3-none-any.whl
ipython @ file:///D:/bld/ipython_1612487184680/work
...
Run Code Online (Sandbox Code Playgroud)

想要的格式:

ipykernel==5.3.4
ipython==7.20.0
...
Run Code Online (Sandbox Code Playgroud)

在激活的 conda 环境中,我不得不使用

pip list --format=freeze
Run Code Online (Sandbox Code Playgroud)

为喜欢在虚拟环境中使用 pip 的人获取生成需求文件的正确格式。

  • 完美运作!只需使用`pip list --format=freeze &gt;requirements.txt`即可将包列表存储为项目目录中的requirements.txt文件。 (2认同)

Ais*_*ngh 15

以防万一有人希望从 conda 中的现有项目生成 requirements.txt,请使用以下内容

  • 转到您的项目环境 conda activate <env_name>

  • conda list 为您提供用于环境的软件包列表

  • conda list -e > requirements.txt 将有关包的所有信息保存到您的文件夹中

  • conda env export > <env_name>.yml

  • pip freeze

  • OP 想要一个可用的requirements.txt 文件。这个程序如何帮助他们实现这一目标? (3认同)
  • 这个答案非常有用,因为它提供了创建 yaml 文件以重新创建 conda 环境所需的确切包列表和命令,而不仅仅是 pip 包的列表。 (2认同)

Evg*_*eny 6

在讨论之后,我想提到的是,您实际上可以看到pipconda角色的某些分离。

pip是一个标准的软件包管理器,它做一件事并且做得很好。requirements.txt可以在一个环境中生成并pip在新环境中安装。

现在有conda输出:您正确地捕获了他们的评论,说“我们生成了要与conda一起使用的库列表”。请注意,python本身在conda列表中,并且(适当地)不在requirements.txtconda复制自己的安装程序,这就是其库列表较长且具有python本身的原因。

pip产生安装在标准库顶部的软件包列表,以使您编写的软件包起作用。希望这有助于区分两者。

此外,pipenv是一种较新的工具,可以为您执行虚拟环境和程序包管理。

  • 就像pip一样,pipenv仍然是基于Python的工具。它不会处理Python外部的需求。这就是conda的用途,要处理较大的图片,请参阅[pip和conda有什么区别?](// stackoverflow.com/a/20994790) (7认同)
  • 虽然此答案提供了一些额外的有用信息,但它没有提供与 conda 和 pip 一起使用的实际命令。 (2认同)

Mat*_*ttG 6

正如上面评论中提到的,正确的完整答案是:

pip list --format=freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)