将Pip包转移到conda

6

我目前正在使用一个共享的Ubuntu机器,它安装了python2.7和通过pip安装的多个软件包。

$ python --version
Python 2.7.12

$ pip --version
pip 18.0 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)

$ pip list
Package                            Version
---------------------------------- -----------
asn1crypto                         0.24.0
awscli                             1.11.101
backports-abc                      0.5
...
..
.

我想安装conda,并拥有Python 2.7和Python 3.6环境。请问如何在两个conda环境(2.7和3.6)中安装当前已安装的所有软件包(pip list)?我不关心软件包的版本,可以为每个软件包安装相同或最新的版本。

你想要在你的conda环境中通过pip安装它们,还是如果存在于condaconda-forge上则通过conda安装,如果不存在则通过pip安装,或者总是通过conda安装(如果不存在则动态生成一个recipe)?如果你不确定,我认为第二种方式可能是最好的,但这是你的选择。 - abarnert
还有,“安装相同版本或最新版本都可以……”但不能是早期版本,对吗? - abarnert
更倾向于通过conda安装。而且,不要使用早期版本。 - Spandan Brahmbhatt
2个回答

8

安装相同版本

首先,将通过pip安装的软件包列表保存到文件中:

pip freeze > packages.txt

然后在你的两个环境中使用conda安装它们:

conda install --yes --file packages.txt

安装时忽略版本号

pip freeze 命令会输出带有版本号的软件包列表。如果要去除版本号,可以使用以下命令:

pip freeze | sed s/=.*// > packages.txt

这样做可以增加你使用conda安装它们时成功的可能性,而不会遇到依赖冲突。

预计出现PackagesNotFoundError

如果你安装了许多软件包,conda可能无法找到其中某些软件包。在这种情况下,请查看这个问题


假设我的conda python版本是3.6,这将安装所有3.6版本的软件包。是否有任何步骤可以将相同的软件包复制到python 2.7 conda环境中? - Spandan Brahmbhatt
1
@SpandanBrahmbhatt 正如答案所说,在您的两个环境中执行相同的命令,您将获得尽可能安装相同软件包。 - abarnert
@SpandanBrahmbhatt 假设您在不同的conda环境中拥有不同的Python版本。在它们之间切换并重复第二个命令。 - Andrey Portnoy
@SpandanBrahmbhatt 最后一件事:这个答案似乎默认你正在使用单个Anaconda安装,其中包含2.7和3.6的conda环境(而不是两个完全独立的Anaconda安装)。除非你有充分的理由做出其他选择,否则这正是你应该使用的方式,但如果你没有这样做,细节可能会略有不同。 - abarnert
@abarnert 我正在使用相同的conda安装。只是为2.7创建环境。 - Spandan Brahmbhatt
显示剩余2条评论

0

在这里可以下载conda并安装多个Python版本,还可以找到与conda相关的许多重要命令。 https://github.com/Nitish1206/conda_setup_for_ubuntu

通过以下方式在conda中安装pip软件包。

*while read requirement; conda install --yes $requirement;or pip install $requirement; end < requirements.txt*

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接