pad包不包含在“conda env export”中

问题描述 投票:11回答:4

我的python项目在conda虚拟环境中运行。我用conda install在环境中安装软件包,只要该软件包可用于安装,否则,我用pip install安装它。

为了使其他开发人员更容易安装项目,我将conda环境中使用的包列表导出到文件:conda env export > conda_environment_export.yml

但是,从一段时间以来,包导出不再包含由pip安装的包。

我可以做些什么来使pip包再次出现在导出中?

我的conda导出文件就像几周前一样:

name: sensor_gateway
channels:
  - defaults
dependencies:
  - aiohttp=2.3.9=py36_0
  - async-timeout=2.0.0=py36hc3e01a3_0
  - certifi=2018.1.18=py36_0
  - chardet=3.0.4=py36h420ce6e_1
  - jinja2=2.10=py36h292fed1_0
  - markupsafe=1.0=py36h0e26971_1
  - multidict=3.3.2=py36h72bac45_0
  - pip=9.0.1=py36h226ae91_4
  - pymysql=0.7.11=py36hf59f3ba_0
  - python=3.6.4=h6538335_1
  - pytz=2018.3=py36_0
  - setuptools=38.4.0=py36_0
  - sqlalchemy=1.2.1=py36hfa6e2cd_0
  - vc=14=h0510ff6_3
  - vs2015_runtime=14.0.25123=3
  - wheel=0.30.0=py36h6c3ec14_1
  - wincertstore=0.2=py36h7fe50ca_0
  - yarl=0.14.2=py36h27d1bf2_0
  - pip:
    - aiohttp-jinja2==0.16.0
    - aiomysql==0.0.12
    - attrs==17.4.0
    - idna==2.6
    - idna-ssl==1.0.0
    - python-mimeparse==1.6.0
prefix: C:\ProgramData\Anaconda3\envs\sensor_gateway

conda出口现在:

name: sensor_gateway
channels:
  - defaults
dependencies:
  - aiohttp=2.3.9=py36_0
  - async-timeout=2.0.0=py36hc3e01a3_0
  - certifi=2018.4.16=py36_0
  - chardet=3.0.4=py36h420ce6e_1
  - icc_rt=2017.0.4=h97af966_0
  - intel-openmp=2018.0.0=8
  - jinja2=2.10=py36h292fed1_0
  - markupsafe=1.0=py36h0e26971_1
  - mkl=2018.0.2=1
  - mkl_fft=1.0.1=py36h452e1ab_0
  - mkl_random=1.0.1=py36h9258bd6_0
  - multidict=3.3.2=py36h72bac45_0
  - numpy=1.14.2=py36h5c71026_1
  - pip=9.0.1=py36h226ae91_4
  - pymysql=0.7.11=py36hf59f3ba_0
  - python=3.6.4=h6538335_1
  - pytz=2018.3=py36_0
  - setuptools=38.4.0=py36_0
  - simplejson=3.14.0=py36hfa6e2cd_0
  - sqlalchemy=1.2.1=py36hfa6e2cd_0
  - vc=14=h0510ff6_3
  - vs2015_runtime=14.0.25123=3
  - wheel=0.30.0=py36h6c3ec14_1
  - wincertstore=0.2=py36h7fe50ca_0
  - yarl=0.14.2=py36h27d1bf2_0
prefix: C:\ProgramData\Anaconda3\envs\sensor_gateway

我怀疑更新conda版本(4.4.10-py36_0 - > 4.5.2-py36_0)可能会导致此项目出现此问题。在另一个项目中,我有同样的问题,但在那里我更新了pip(9.0.1-py36h226ae91_4 - > 10.0.1-py36_0)。即使在那里回到pip 9.0.1之后,问题仍然存在。我的怀疑是否正确?我还能做些什么来解决这个问题呢?

更新:

现在唯一提出的答案链接到this question,它似乎没有解决我的问题:

1.在Windows命令终端上,以管理员身份打开:

where pip输出(where作为unix / linux上的which的windows-equivalent命令):

C:\ProgramData\Anaconda3\Scripts\pip.exe
C:\Users\Sander\AppData\Local\Programs\Python\Python36\Scripts\pip.exe

pip freeze输出:

列出我在'普通'python上安装的所有软件包(=默认安装的所有软件包,不在任何专用虚拟环境中)。包列表太长,不能包含在这里。

2.在Windows命令终端上,使用管理员权限打开,并在执行activate sensor_gateway后:

where pip输出:

C:\ProgramData\Anaconda3\envs\sensor_gateway\Scripts\pip.exe
C:\ProgramData\Anaconda3\Scripts\pip.exe
C:\Users\Sander\AppData\Local\Programs\Python\Python36\Scripts\pip.exe

pip freeze输出:

列出在我的环境中正确安装了pip的所有软件包。

所以当我的虚拟环境被激活时,似乎在该环境中安装了一个pip,并且它必须是那个在被要求时返回已安装软件包列表的pip,而不是另一个pip安装,因为环境中的pip软件包列表是正确的。

pip anaconda conda
4个回答
6
投票

我只能通过在具有管理员权限的命令窗口中运行它来解决此问题:

activate <env-name>
conda update pip

之后,我环境中可用软件包的导出再次包含使用conda安装的软件包和使用pip的软件包。

我怀疑我可能导致了这个包导出问题,因为我在执行包安装时遵循了先前pip给出的指令:

“您正在使用pip版本9.0.3,但版本10.0.1可用。您应该考虑通过'python -m pip install --upgrade pip'>命令进行升级。”

所以用python -m pip install --upgrade pip更新打破了我的包裹出口,但conda update pip修复了它。


3
投票

对我来说这只出现使用conda包pip 18.1_py36_0(没有尝试任何其他版本)。因此,我将虚拟环境中的pip降级为版本10

conda install pip=10

在此之后,导出再次列出了pip包。

另请参阅conda https://github.com/conda/conda/pull/7612的这个拉取请求,它解决了conda 4.6.2的问题。它也被移植到conda 4.5.10。目前没有conda 4.4.x backport。


1
投票

在写这篇文章的那一刻,由于anaconda读取pip列表的问题,conda export命令只导出通过conda install packagename安装的软件包并忽略pip。

您可以尝试通过conda install重新安装软件包,看看它是否正确生成了environment.yml文件。


0
投票

如果您使用pip安装了anaconda并用它来安装软件包,那么conda-env会自动执行此操作。

所以基本上你可以导出你的环境

conda env export -n <env-name> > environment.yml

除此以外

请参考这个link

© www.soinside.com 2019 - 2024. All rights reserved.