python-3.x 从conda为pip3创建requirements.txt

bn31dyow  于 2022-11-19  发布在  Python
关注(0)|答案(7)|浏览(207)

大家好,我通常使用conda来管理我的环境,但现在我正在进行一个项目,它需要比我的笔记本电脑多一点的马力。所以我尝试使用我所在大学的工作站,这些工作站安装了新的英特尔至强处理器。但我没有管理员权限,工作站也没有conda,所以我不得不使用virtualenv和pip3。
我如何从conda生成一个requirements.txt,它将与pip3venv一起工作?

conda list -e > requirements.txt

不生成兼容文件:

= is not a valid operator. Did you mean == ?

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

我想我应该手动将所有的=更改为==,但是在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
axkjgtzd

axkjgtzd1#

如顶部的注解所示,
conda list -e > requirements.txt
可用于创建conda虚拟环境,
conda create --name <env> --file requirements.txt
但此输出的格式不适合pip
如果你想要一个可以用来创建pip虚拟环境的文件(即正确格式的requirements.txt),你可以在conda环境中安装pip,然后使用pip创建requirements.txt

conda activate <env>
conda install pip
pip freeze > requirements.txt

然后使用生成的requirements.txt创建pip虚拟环境:

python3 -m venv env
source env/bin/activate
pip install -r requirements.txt

当我对此进行测试时,输出中的包并不完全相同(pip包含的包较少),但足以设置一个功能环境。
对于在requirements.txt中获得奇怪路径引用的用户,请用途:

pip list --format=freeze > requirements.txt
kyks70gy

kyks70gy2#

在conda环境中,只需调用

pip freeze

我得到了:

ipykernel @ file:///C:/ci/ipykernel_1607454116140/work/dist/ipykernel-5.3.4-py3-none-any.whl
ipython @ file:///D:/bld/ipython_1612487184680/work
...

所需格式:

ipykernel==5.3.4
ipython==7.20.0
...

在一个 * 激活的conda环境 * 我不得不使用

pip list --format=freeze

以获得正确的格式,用于为喜欢在虚拟环境中使用PIP的人生成需求文件。

保存到文件:

pip list --format=freeze > requirements.txt
3gtaxfhh

3gtaxfhh3#

在讨论之后,我想提一下,您实际上可以看到pipconda角色的一些分离。
pip是一个标准的软件包管理器,它只做一件事,而且做得很好。requirements.txt可以在一个环境中生成,并由pip安装在新的环境中。
现在有conda输出:您正确地捕获了他们的注解,该注解说 “我们生成了这个库列表以与conda一起工作”。请注意,python本身在conda列表中,而(正确地)不在requirements.txt中。conda复制了自己的安装,这就是为什么它的库列表更长,并且有python本身。
pip生成了一个安装在标准库顶部的包的列表,以使您编写的包能够工作。希望它有助于区分这两者。
此外,pipenv是一个较新的工具,可以为您进行虚拟环境和软件包管理。

9rnv2umw

9rnv2umw4#

如果有人希望从conda中的现有项目生成requirements.txt,请使用以下代码

  • 转到项目环境conda activate <env_name>
  • conda list * 为您提供用于该环境的软件包列表 *
  • conda list -e > requirements.txt * 将有关软件包的所有信息保存到您的文件夹 *
  • conda env export > <env_name>.yml
  • pip freeze
6tqwzwtp

6tqwzwtp5#

激活conda环境
conda activate flask-test
获取conda env的路径并复制它
conda list
lib\site-packages附加复制的路径,并在pip中使用--path选项
pip freeze --path C:\Users\username\Miniconda3\envs\flask-test\lib\site-packages > requirements.txt在Linux上,路径类似于/home/username/miniconda3/envs/flask-app/lib/python3.8/site-packages/

mzmfm0qo

mzmfm0qo6#

如上面的注解所述,正确的完整答案是:

pip list --format=freeze > requirements.txt
oyjwcjzk

oyjwcjzk7#

我做了一些简单的python脚本来将conda requirements.txt转换为pip 3。只需复制下面的代码。

f = open(r"requirements.txt", "r").read()
f1 = f.split("\n")
for line in f1:  
    if "=" in line:
       a = line.split("=")[0:-1]
       print(a[0]+"==" + a[1])

则只复制打印输出;
示例输出:

_libgcc_mutex==0.1
_openmp_mutex==4.5
blas==1.0
brotli==1.0.9
bzip2==1.0.8

相关问题