Python 管理软件包:PyCharm vs conda vs pip
我是Python新手,最近在Windows 10上安装了PyCharm 2016.3。我也在用水蟒3 我对软件包管理了解不多,希望能更好地理解它。通常我只使用Python 管理软件包:PyCharm vs conda vs pip,python,pip,pycharm,packages,conda,Python,Pip,Pycharm,Packages,Conda,我是Python新手,最近在Windows 10上安装了PyCharm 2016.3。我也在用水蟒3 我对软件包管理了解不多,希望能更好地理解它。通常我只使用conda update--all,但我注意到(通过检查本地PyCharm解释器的包列表),这并没有将所有包升级到最新版本 其中一个软件包是Pillow,它的版本是4.0.0,但conda(4.3.11)不会更新到3.4.2之后。我尝试了conda安装枕头:4.0.0,得到了: UnsatisfiableError: The followi
conda update--all
,但我注意到(通过检查本地PyCharm解释器的包列表),这并没有将所有包升级到最新版本
其中一个软件包是Pillow,它的版本是4.0.0,但conda(4.3.11)不会更新到3.4.2之后。我尝试了conda安装枕头:4.0.0
,得到了:
UnsatisfiableError: The following specifications were found to be in conflict:
- pillow 4.0.0*
- python 3.5*
- spyder-app
Use "conda info <package>" to see the dependencies for each package.
The following NEW packages will be INSTALLED:
libiconv: 1.14-vc14_4 conda-forge [vc14]
libxml2: 2.9.3-vc14_9 conda-forge [vc14]
olefile: 0.44-py35_0 conda-forge
vc: 14-0 conda-forge
The following packages will be UPDATED:
freetype: 2.5.5-vc14_2 [vc14] --> 2.7-vc14_0 conda-forge [vc14]
jpeg: 8d-vc14_2 [vc14] --> 9b-vc14_0 conda-forge [vc14]
libtiff: 4.0.6-vc14_2 [vc14] --> 4.0.6-vc14_7 conda-forge [vc14]
pillow: 3.4.2-py35_0 --> 4.0.0-py35_2 conda-forge
The following packages will be SUPERCEDED by a higher-priority channel:
conda: 4.3.11-py35_0 --> 4.2.13-py35_0 conda-forge
conda-env: 2.6.0-0 --> 2.6.0-0 conda-forge
qt: 4.8.7-vc14_9 [vc14] --> 4.8.7-vc14_6 conda-forge [vc14]
我决定不继续,而是尝试了pip安装
。由于此命令不要求确认,因此仅安装了软件包。现在,当我键入conda list
时,我得到:
Pillow 4.0.0 <pip>
pillow 3.4.2 py35_0
我的问题是:
1) 我应该依靠什么使我的所有软件包保持最新,而不存在兼容性问题
2) 为什么conda-install-pillow:4.0.0
返回错误,但conda-install-c conda-forge-pillow=4.0.0
没有返回错误
3) 依赖项列表中枕头4.0.0和python 3.5旁边的*是什么意思
4) 从现在起,我有枕头3.4.2(在/anaconda3/pkgs
中)和枕头4.0.0(在/anaconda3/lib/site packages
中),如果我导入枕头,会使用哪一个
5) 替换的conda:4.3.11-py35_0-->4.2.13-py35_0 conda forge
是否意味着conda被降级
6) 标签pip、py35_0、py35_4、np111py35_2等之间有什么区别
7) PyCharm告诉我有一个2.9.5版本的Jinja2包,但是普通的conda和conda forge都只能找到2.9.4。PyCharm是从哪个渠道获得这些信息的?好的,我不能回答你所有的问题,但下面是: 1) Conda遵从“预先处理问题”的方法来处理依赖关系/冲突解决。你必须让你所有的包在回购协议/渠道中很好地发挥作用,你甚至可以制作一个包或将它们放在一个环境中。您可以尝试使用--强制或--不使用DEP来运行它,以尝试将其加入,但是。。。。。这可能会在将来给您带来问题(我不知道这是否适用于更高版本的conda,它的变化很大)。只要让软件包保持最新,我就会使用pip。在过去的几年中,它走过了漫长的道路() 2) 我不完全确定,我相信这与为康达提供一个明确的非url频道有关。通常,您会将其URL传递给conda forge回购协议(我认为,我们在内部也不使用conda forge) 3) *表示忽略补丁/build 4.0.0==Major.Minor.build。同样,3.5*==3.5的任何版本 4) 我会在终端中导入枕头,然后打印出模块,看看它是从哪里来的,为什么要猜 5) 通过(尽管我认为通过) (六)
- pip:意味着您通过pip安装了该软件包。如果您使用一个列表——显式,它将不会被拾取
- py35_0:有一个要求/仅适用于使用python 3.5的环境/包
- py35_4:不确定(总是忘记那个)
- np111py35_2:需要python3.5和numpy1.11(我认为*)
注意:如果您打算使用conda,您可能只想将conda forge添加到频道列表中,而不是传递-c(但是查看其他频道的组织方式将有助于您了解如何传递-c标志)很多人已经把这场讨论的每一部分都讨论了一遍:FWIW:我个人的观点是,不要卷入康达,只要使用pip就行了。Pycharm是一名编辑。@Kelvin感谢您的反馈!我意识到康达vs皮普这件事之前已经讨论过了,但是如果你读了我的帖子,你会发现我不仅仅是想比较两者。最后我问了一些具体的问题,我在这里没有看到答案。你能帮我拿一个吗?我也意识到PyCharm是一名编辑。我只是指它能检查软件包是否是最新的。@Kevin谢谢你的帮助!当我尝试更新或安装软件包时,pip会通知我可能发生的冲突吗?我不确定,如果它是后续依赖项列表的一部分,pip用于卸载和安装更高版本(我相信)。。我不知道这几天它在干什么。我已经有一段时间没有用它做任何重要的事情了。它对冲突一无所知。如果皮普对冲突一无所知,这不是一个支持康达的有力论据吗?还是我在这里遗漏了什么?似乎使用一个管理器是一个好主意,该管理器至少会通知您,当您安装了几十个软件包时(就像您下载Anaconda时一样),可能是这样,也可能不是这样。有时,冲突发生在库中与代码完全无关的部分。这可能只是你的痛点。或者,开发人员需要知道他或她正在使用什么库,这样您就可以拥有依赖项并根据需要进行更正。
# All requested packages already installed.
pillow 3.4.2 py35_0