Anaconda:无法解释通过conda pip安装的包的行为

2024-10-04 15:34:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图导出一个使用conda+pip构建的conda env(通过conda安装),但是我缺少一些通过pip安装的包。下面是我所遵循的详细过程。在

我运行的操作系统是:

bdauser@testsuselinux:~> cat /etc/os-release
NAME="SLES"
VERSION="12-SP3"
VERSION_ID="12.3"
PRETTY_NAME="SUSE Linux Enterprise Server 12 SP3"
ID="sles"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:suse:sles:12:sp3"

这是我的Python版本:

^{pr2}$

我通过以下方式创建并激活了水蟒环境:

^{3}$

然后,我通过以下方式为conda安装了pip:

(libmad) bdauser@testsuselinux:~> conda install pip

然后,我使用pip for conda成功安装了一个软件包:

(libmad) bdauser@testsuselinux:~> /home/bdauser/anaconda3/envs/libmad/bin/pip install nltk==3.4

我已通过以下方式检查程序包是否实际安装:

(libmad) bdauser@testsuselinux:~/anaconda3/envs/libmad/bin> /home/bdauser/anaconda3/envs/libmad/bin/pip install nltk==3.4
Requirement already satisfied: nltk==3.4 in /home/bdauser/anaconda3/envs/libmad/lib/python3.5/site-packages (3.4)
Requirement already satisfied: six in /home/bdauser/anaconda3/envs/libmad/lib/python3.5/site-packages (from nltk==3.4) (1.12.0)
Requirement already satisfied: singledispatch in /home/bdauser/anaconda3/envs/libmad/lib/python3.5/site-packages (from nltk==3.4) (3.4.0.3)

此时,我尝试导出conda env:

(libmad) bdauser@testsuselinux:~/anaconda3/envs/libmad/bin> conda env export
name: libmad
channels:
- defaults
dependencies:
- ca-certificates=2019.1.23=0
- certifi=2018.8.24=py35_1
- libedit=3.1.20181209=hc058e9b_0
- libffi=3.2.1=hd88cf55_4
- libgcc-ng=8.2.0=hdf63c60_1
- libstdcxx-ng=8.2.0=hdf63c60_1
- ncurses=6.1=he6710b0_1
- openssl=1.0.2r=h7b6447c_0
- pip=10.0.1=py35_0
- python=3.5.6=hc3d631a_0
- readline=7.0=h7b6447c_5
- setuptools=40.2.0=py35_0
- sqlite=3.28.0=h7b6447c_0
- tk=8.6.8=hbc83047_0
- wheel=0.31.1=py35_0
- xz=5.2.4=h14c3975_4
- zlib=1.2.11=h7b6447c_3
prefix: /home/bdauser/anaconda3/envs/libmad

但是nltk并没有像你看到的那样出现。在

我尝试运行一个简单的conda list,我可以看到nltk包:

(libmad) bdauser@testsuselinux:~/anaconda3/envs/libmad/bin> conda list
# packages in environment at /home/bdauser/anaconda3/envs/libmad:
#
ca-certificates           2019.1.23                     0
certifi                   2018.8.24                py35_1
libedit                   3.1.20181209         hc058e9b_0
libffi                    3.2.1                hd88cf55_4
libgcc-ng                 8.2.0                hdf63c60_1
libstdcxx-ng              8.2.0                hdf63c60_1
ncurses                   6.1                  he6710b0_1
nltk                      3.4                       <pip>
openssl                   1.0.2r               h7b6447c_0
pip                       10.0.1                   py35_0
pip                       19.1.1                    <pip>
python                    3.5.6                hc3d631a_0
readline                  7.0                  h7b6447c_5
setuptools                41.0.1                    <pip>
setuptools                40.2.0                   py35_0
singledispatch            3.4.0.3                   <pip>
six                       1.12.0                    <pip>
sqlite                    3.28.0               h7b6447c_0
tk                        8.6.8                hbc83047_0
wheel                     0.31.1                   py35_0
xz                        5.2.4                h14c3975_4
zlib                      1.2.11               h7b6447c_3

如果我使用export标志运行同一个命令,就不会再看到nltk:

(libmad) bdauser@testsuselinux:~/anaconda3/envs/libmad/bin> conda list --export
# This file may be used to create an environment using:
# $ conda create --name <env> --file <this file>
# platform: linux-64
ca-certificates=2019.1.23=0
certifi=2018.8.24=py35_1
libedit=3.1.20181209=hc058e9b_0
libffi=3.2.1=hd88cf55_4
libgcc-ng=8.2.0=hdf63c60_1
libstdcxx-ng=8.2.0=hdf63c60_1
ncurses=6.1=he6710b0_1
openssl=1.0.2r=h7b6447c_0
pip=10.0.1=py35_0
python=3.5.6=hc3d631a_0
readline=7.0=h7b6447c_5
setuptools=40.2.0=py35_0
sqlite=3.28.0=h7b6447c_0
tk=8.6.8=hbc83047_0
wheel=0.31.1=py35_0
xz=5.2.4=h14c3975_4
zlib=1.2.11=h7b6447c_3

有人能解释这种行为吗?我做错什么了?目标是将conda env导出到另一台计算机,其中所有包都通过pip安装。在

提前谢谢你, 阿莱西奥


Tags: pipenvhomebinngcondanltkenvs
1条回答
网友
1楼 · 发布于 2024-10-04 15:34:09

我怀疑问题是您通过PyPI更新了pip,然后用它来安装包。我认为Conda在识别不是通过Conda安装的pip安装的包时遇到问题。相反,请尝试仅使用通过Conda安装的pip

conda create -n libmad python=3.5 pip
conda activate libmad
pip install nltk==3.4

提示:如果您处于激活的环境中,则不必提供pip的完整路径。

从技术上讲,我们不应该在创建步骤中包含pip,因为Conda总是在安装python时安装pip;为了更好地衡量,我们将其保留在这里。另外请注意,您可以通过Conda Forge频道获得pip的更新版本(对于python3.5,可以达到18.0)。在

然后,conda env export给出:

^{pr2}$

相关问题 更多 >

    热门问题