Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 管理软件包:PyCharm vs conda vs pip_Python_Pip_Pycharm_Packages_Conda - Fatal编程技术网

Python 管理软件包:PyCharm vs conda vs pip

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

我是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 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(我认为*)
7) 我倾向于避开pycharm,我相信您可以检查pycharm所指向的python解释器,以了解它所处的环境。基于根环境,您可以执行conda info并获得指向的所有频道的列表


注意:如果您打算使用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