故障排除#

在 Windows 批处理脚本中使用 conda 过早退出#

在 conda 4.6+ 中,您与 conda 交互的方式是通过批处理脚本 (%PREFIX%\condabin\conda.bat)。不幸的是,这意味着从其他批处理脚本中使用 conda 有点复杂。当从批处理脚本中使用批处理脚本时,您必须在命令前加上 CALL。如果您不这样做,调用 conda 的批处理脚本将在 conda 使用后立即退出。换句话说,如果您在 .bat 文件中编写此内容

conda create myenv python
conda activate myenv
echo test

激活和回显都不会发生。您必须在批处理脚本中编写此内容

CALL conda create myenv python
CALL conda activate myenv
echo test

这是 cmd.exe 的已知行为,我们尚未找到任何更改它的方法。https://stackoverflow.com/questions/4798879/how-do-i-run-a-batch-script-from-within-a-batch-script/4798965

NumPy MKL 库加载失败#

类似如下的错误消息

Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll

The ordinal 241 could not be located in the the dynamic link library

原因#

NumPy 无法加载正确的 MKL 或 Intel OpenMP 运行时库。这几乎总是由以下两种情况之一引起的

  1. 包含 NumPy 的环境尚未激活。

  2. 另一家软件供应商已将 MKL 或 Intel OpenMP (libiomp5md.dll) 文件安装到 C:\Windows\System32 文件夹中。这些文件在 Anaconda 的文件之前加载,并且不兼容。

解决方案#

如果您没有激活环境,请从激活环境开始。有关更多信息,请参阅 激活环境。如果您仍然遇到问题,您可能需要考虑更严厉的措施。

  1. 从 C:\Windows\System32 中删除任何与 MKL 相关的文件。我们建议将它们重命名为添加 .bak 到文件名以有效地隐藏它们。观察是否有其他软件崩溃。尝试将 DLL 文件移动到崩溃软件的 .exe 文件旁边。如果它再次工作,您可以将事物保持在移动状态 - Anaconda 不需要 System32 中的 MKL,其他软件也不应该需要它。如果您识别出在此处安装软件的软件,请联系该软件的创建者。告知他们将 MKL 安装到全局位置的做法是脆弱的,并且正在破坏其他人的软件并浪费大量时间。请参阅下面的罪魁祸首列表。

  2. 您可以尝试 Anaconda 内置到 Python 中的特殊 DLL 加载模式。这会将 DLL 搜索路径从首先搜索 System32 更改为将 System32 作为 PATH 上的另一个条目,从而允许在 System32 中的库之前找到 conda 环境中的库。此功能的控制通过环境变量完成。只有超出以下版本的 Python 构建才会对这些环境变量做出反应

    • Python 2.7.15 build 14

    • Python 3.6.8 build 7

    • Python 3.7.2 build 8

    要从 defaults 通道更新 Python

    conda update -c defaults python
    

    注意

    Anaconda 已在其 Python 构建中构建了特殊补丁以启用此功能。如果您从其他地方(例如 conda-forge)获取 Python 包,则这些标志可能不会执行任何操作。

    控制环境变量

    • CONDA_DLL_SEARCH_MODIFICATION_ENABLE

    • CONDA_DLL_SEARCH_MODIFICATION_DEBUG

    • CONDA_DLL_SEARCH_MODIFICATION_NEVER_ADD_WINDOWS_DIRECTORY

    • CONDA_DLL_SEARCH_MODIFICATION_NEVER_ADD_CWD

    要在 Windows 上设置变量,您可以选择使用 CLI 或 Windows GUI。

    这些应设置为值 1 以启用它们。例如,在终端中

    set CONDA_DLL_SEARCH_MODIFICATION_ENABLE=1
    

注意

最终应仅设置 CONDA_DLL_SEARCH_MODIFICATION_ENABLE

将 Intel 库安装到 C:\Windows\System32 的已知软件列表

  • Amplitube,由 IK Multimedia 提供

  • ASIO4ALL,由 Michael Tippach 提供

如果您发现其他软件,请告知我们。如果您在此列表中并且想要解决问题,请告知我们。无论哪种情况,conda/conda#issues 上的 conda 问题跟踪器是联系我们的最佳方式。

SSL 连接错误#

这是一个范围广泛的错误,原因有很多。以下是我们看到的一些。

CondaHTTPError: HTTP 000 CONNECTION FAILED#

如果您在 Windows 上并且看到此错误,请在错误文本中进一步查找。您是否看到如下内容?

SSLError(MaxRetryError('HTTPSConnectionPool(host=\'repo.anaconda.com\', port=443): Max retries exceeded with url: /pkgs/r/win-32/repodata.json.bz2 (Caused by SSLError("Can\'t connect to HTTPS URL because the SSL module is not available."))'))

那里的关键部分是最后一点

Caused by SSLError("Can\'t connect to HTTPS URL because the SSL module is not available.")

Conda 遇到问题,因为它找不到所需的 OpenSSL 库。

原因#

您可能会在 conda 更新后观察到此错误的出现。更新版本的 conda 和更新版本的 Python 在要求激活环境方面更加严格。我们正在努力改进它们的错误消息,但这是目前的情况。Windows 依赖 PATH 环境变量作为查找不在直接文件夹中,也不在 C:\Windows\System32 文件夹中的库的方式。在 PATH 文件夹中搜索库是从左到右进行的。如果您选择将 Anaconda 的文件夹放在 PATH 上,则有几个文件夹

  • (安装根目录)

  • (安装根目录)/Library/(MSYS2 env)/bin ## 依赖于 MSYS2 包

  • (安装根目录)/Library/mingw-w64/bin

  • (安装根目录)/Library/usr/bin

  • (安装根目录)/Library/bin

  • (安装根目录)/Scripts

  • (安装根目录)/bin

  • (安装根目录)/condabin

Anaconda 的早期安装程序将这些放在 PATH 上。这最终是脆弱的,因为 Anaconda 不是系统上唯一的软件。如果其他软件具有类似命名的可执行文件或库,并且在 PATH 中更早出现,则 Anaconda 可能会崩溃。另一方面,如果 Anaconda 在 PATH 顺序中更早并且屏蔽了任何其他可执行文件或库,则 Anaconda 可能会破坏其他软件。为了使其更容易,我们开始推荐“激活”而不是修改 PATH。激活是一种工具,conda 在其中设置您的 PATH,并运行任何自定义包脚本,这些脚本通常用于设置软件运行所需的其他环境变量(例如 JAVA_HOME)。由于激活仅在本地终端会话中运行(与永久 PATH 条目相反),因此将 Anaconda 的 PATH 条目放在首位是安全的。这意味着当您运行 Anaconda 时,Anaconda 的库获得更高的优先级,但当您不运行 Anaconda 时,Anaconda 不会干扰其他软件。

Anaconda 的 Python 解释器长期以来包含一个补丁,该补丁将 (安装根目录)/Library/bin 文件夹添加到该 Python 的 PATH 中。不幸的是,这完全干扰了在使用该 Python 解释器时对 PATH 的推理。我们在 Python 3.7.0 中删除了该补丁,对于那些未激活其环境且 PATH 上没有正确条目的人员,我们很遗憾这已引起问题。我们正在尝试允许我们的可执行文件较少依赖 PATH 并且更自觉地了解其所需的库加载路径的方法。但是,目前,解决此问题的唯一方法是正确管理 PATH。

我们谦虚地认为,激活是确保一切正常工作的最简单方法。有关激活的更多信息,请参阅 激活环境

解决方案#

使用从 Anaconda Navigator 打开的 shell。如果您使用 GUI IDE 并且看到此错误,请要求您的 IDE 开发人员为 conda 环境添加激活功能。

SSL 证书错误#

原因#

如果您没有安全连接到包仓库的证书,则安装包可能会产生“连接失败”错误。

解决方案#

Pip 可以使用 --use-feature=truststore 选项来使用操作系统证书存储。这可能对通常具有 https 流量检查的企业环境有所帮助,其中企业 CA 安装在操作系统证书存储中

pip install --use-feature=truststore

Conda 具有类似的选项

conda config --set ssl_verify truststore

或者,pip 可以使用 --trusted-host 选项来指示仓库的 URL 是受信任的

pip install --trusted-host pypi.org

Conda 具有三个类似的选项。

  1. 选项 --insecure-k 忽略所有主机的证书验证错误。

    运行 conda create --help 显示

    Networking Options:
      -k, --insecure        Allow conda to perform "insecure" SSL connections and
                            transfers. Equivalent to setting 'ssl_verify' to
                            'False'.
    
  2. 配置选项 ssl_verify 可以设置为 False

    运行 conda config --describe ssl_verify 显示

    # # ssl_verify (bool, str)
    # #   aliases: verify_ssl
    # #   conda verifies SSL certificates for HTTPS requests, just like a web
    # #   browser. By default, SSL verification is enabled and conda operations
    # #   will fail if a required URL's certificate cannot be verified. Setting
    # #   ssl_verify to False disables certification verification. The value for
    # #   ssl_verify can also be (1) a path to a CA bundle file, (2) a path to a
    # #   directory containing certificates of trusted CA, or (3) 'truststore'
    # #   to use the operating system certificate store.
    # #
    # ssl_verify: true
    

    运行 conda config --set ssl_verify false 修改 ~/.condarc 并为该用户执行的所有未来 conda 操作设置 -k 标志。运行 conda config --help 显示其他配置范围选项。

    当使用 conda config 时,默认情况下使用用户在 ~/.condarc 的 conda 配置文件。标志 --system 将改为写入所有用户的系统配置文件,位于 <CONDA_BASE_ENV>/.condarc。标志 --env 将改为写入活动 conda 环境的配置文件,位于 <PATH_TO_ACTIVE_CONDA_ENV>/.condarc。如果使用 --env 并且没有活动环境,则使用用户配置文件。

  3. 配置选项 ssl_verify 可用于安装新证书。

    运行 conda config --describe ssl_verify 显示

    # # ssl_verify (bool, str)
    # #   aliases: verify_ssl
    # #   conda verifies SSL certificates for HTTPS requests, just like a web
    # #   browser. By default, SSL verification is enabled, and conda operations
    # #   will fail if a required URL's certificate cannot be verified. Setting
    # #   ssl_verify to False disables certification verification. The value for
    # #   ssl_verify can also be (1) a path to a CA bundle file, (2) a path to a
    # #   directory containing certificates of trusted CA, or (3) 'truststore'
    # #   to use the operating system certificate store.
    # #
    # ssl_verify: true
    

    您的网络管理员可以为您提供网络防火墙的证书捆绑包。然后可以将 ssl_verify 设置为该证书颁发机构 (CA) 捆绑包的路径,并且包安装操作将完成而不会出现连接错误。

    当使用 conda config 时,默认情况下使用用户在 ~/.condarc 的 conda 配置文件。标志 --system 将改为写入所有用户的系统配置文件,位于 <CONDA_BASE_ENV>/.condarc。标志 --env 将改为写入活动 conda 环境的配置文件,位于 <PATH_TO_ACTIVE_CONDA_ENV>/.condarc。如果使用 --env 并且没有活动环境,则使用用户配置文件。

SSL 验证错误#

原因#

此错误可能是由 Windows 上缺少激活或证书过期引起的

SSL verification error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)

解决方案#

确保您的 conda 是最新的:conda --version

如果不是,请运行:conda update conda

尝试使用操作系统证书存储。使用以下命令将您的 ssl_verify 变量设置为 truststore

conda config --set ssl_verify truststore

如果使用操作系统证书存储无法解决您的问题,请暂时将您的 ssl_verify 变量设置为 false,升级 requests 包,然后使用以下命令将 ssl_verify 设置回 true

conda config --set ssl_verify false
conda update requests
conda config --set ssl_verify true

您还可以将 ssl_verify 设置为证书的字符串路径,该路径可用于验证 SSL 连接。修改您的 .condarc 并包含以下内容

ssl_verify: path-to-cert/chain/filename.ext

如果仓库使用自签名证书,请使用证书的实际路径。如果仓库由私有证书颁发机构 (CA) 签名,则该文件需要包含根证书和任何中间证书。

安装期间的权限被拒绝错误#

原因#

umask 命令确定掩码设置,该设置控制如何为新创建的文件设置文件权限。如果您有一个非常严格的 umask,例如 077,您会收到“权限被拒绝”错误。

解决方案#

在调用 conda 命令之前,设置一个限制性较低的 umask。Conda 旨在作为用户空间工具,但用户通常需要在全局环境中使用它。一个可能出错的地方是文件权限限制。当您安装必须由系统上其他人读取的文件时,Conda 会创建链接。

要为自己提供对文件和目录的完全权限,但阻止组和其他用户访问

  1. 在安装之前,将 umask 设置为 007

  2. 安装 conda。

  3. umask 返回到原始设置

    umask 007
    conda install
    umask 077
    

有关 umask 的更多信息,请参阅 http://en.wikipedia.org/wiki/Umask

使用 sudo conda 命令后权限被拒绝错误#

解决方案#

一旦您使用 sudo 运行 conda,您必须永远使用 sudo。我们建议您永远不要使用 sudo 运行 conda。

已安装错误消息#

原因#

如果您试图在不删除当前安装的情况下修复 conda 问题,并且尝试重新安装 Miniconda 或 Anaconda 以修复它,您会收到一条错误消息,指出 Miniconda 或 Anaconda 已安装,您无法继续。

解决方案#

使用 --force 选项安装。

Miniconda 下载页面 下载并安装适用于您操作系统的 Miniconda,使用 force 选项 --force-f

bash Miniconda3-latest-MacOSX-x86_64.sh -f

注意

为您操作系统替换适当的文件名和版本。

注意

确保您安装到与现有安装相同的位置,以便它覆盖核心 conda 文件,而不会在新文件夹中安装重复项。

Conda 报告某个包已安装,但它似乎未安装#

有时 conda 声称某个包已安装,但它似乎未安装,例如,一个 Python 包给出 ImportError。

此问题有几个可能的原因,每个原因都有其自身的解决方案。

原因#

您不在与您的包相同的 conda 环境中。

解决方案#

  1. 确保您在与您的包相同的 conda 环境中。conda info 命令告诉您在 default environment 下当前激活的环境。

  2. 通过运行以下命令验证您是否正在使用来自正确环境的 Python

    import sys
    
    print(sys.prefix)
    

原因#

对于 Python 包,您已设置 PYTHONPATHPYTHONHOME 变量。这些环境变量导致 Python 从标准位置以外的位置加载文件。当未设置这些环境变量时,Conda 工作效果最佳,因为它们的典型用例被 conda 环境所取代,并且一个常见的问题是它们导致 Python 拾取错误或损坏的库版本。

解决方案#

对于 Python 包,请确保您未设置 PYTHONPATHPYTHONHOME 变量。conda info -a 命令显示这些环境变量的值。

  • 要为当前终端会话临时取消设置这些环境变量,请运行 unset PYTHONPATH

  • 要永久取消设置它们,请检查文件中的行

    • 如果您使用 bash---~/.bashrc~/.bash_profile~/.profile

    • 如果您使用 zsh---~/.zshrc

    • 如果您在 Windows 上使用 PowerShell,则文件输出为 $PROFILE

原因#

您具有特定于站点的目录,或者对于 Python,您具有所谓的特定于站点的文件。这些文件通常位于 macOS 和 Linux 上的 ~/.local 中。有关特定于站点的包位置的完整描述,请参阅 PEP 370。与 PYTHONPATH 一样,Python 可能会尝试从此目录导入包,这可能会导致问题。

解决方案#

对于 Python 包,删除特定于站点的目录和特定于站点的文件。

原因#

对于 C 库,已设置以下环境变量

  • macOS---DYLD_LIBRARY_PATH

  • Linux---LD_LIBRARY_PATH

这些的作用类似于 Python 的 PYTHONPATH。如果设置了它们,它们可能会导致从 conda 环境以外的位置加载库。Conda 环境消除了这些变量的大多数用例。conda info -a 命令显示这些变量的设置值。

解决方案#

取消设置 DYLD_LIBRARY_PATHLD_LIBRARY_PATH

原因#

偶尔,已安装的包会损坏。Conda 的工作方式是将包解压缩到 pkgs 目录中,然后将它们硬链接到环境。有时这些会损坏,从而破坏使用它们的所有环境。它们还会破坏任何其他环境,因为每次都硬链接相同的文件。

解决方案#

运行命令 conda install -f 以再次解压缩包并重新链接它。它还对包执行 MD5 验证。通常,如果这不同,则是因为您的通道已更改,并且存在具有相同名称、版本和构建编号的不同包。

注意

这会破坏与已安装此包的任何其他环境的链接,因此您也必须在那里重新安装它。这也意味着,如果您有许多环境,则经常运行 conda install -f 可能会占用大量磁盘空间。

注意

-f 标志用于 conda install (--force) 时,意味着 --no-deps,因此 conda install -f package 不会重新安装 package 的任何依赖项。

pkg_resources.DistributionNotFound: conda==3.6.1-6-gb31b0d4-dirty#

原因#

本地 conda 版本需要更新。

解决方案#

强制重新安装 conda。一种使用 conda 开发版本的有效方法是在 conda GitHub 仓库 的检出版本上运行 python setup.py develop。但是,如果您不经常运行 git pull,最好取消 develop,否则您将无法获得 conda 的任何常规更新。正常的做法是运行 python setup.py develop -u

但是,此命令不会替换 conda 脚本本身。对于其他软件包,这不是问题,因为您可以使用 conda 重新安装它们,但如果 conda 已安装,则无法使用 conda。

解决方法是使用 conda git 仓库中的 ./bin/conda 可执行文件强制重新安装 conda。也就是说,运行 ./bin/conda install -f conda。然后,您可以使用 conda info 验证您拥有最新版本的 conda,而不是 git 检出版本。该版本不应包含任何哈希值。

macOS 错误 "ValueError unknown locale: UTF-8"#

原因#

这是 macOS 终端应用程序中的一个错误,仅在某些区域设置中出现。区域设置是国家/语言的组合。

解决方案#

  1. /Applications/Utilities 中打开“终端”

  2. 清除“启动时设置区域设置环境变量”复选框。

    ../_images/conda_locale.jpg

这会将您的 LANG 环境变量设置为空。这可能会导致“终端”为您的区域设置使用不正确的设置。“终端”中的 locale 命令会告诉您正在使用哪些设置。

要使用正确的语言,请在您的 bash 配置文件中添加一行,通常是 ~/.profile

export LANG=your-lang

注意

your-lang 替换为您的语言的正确区域设置说明符。

locale -a 命令显示所有说明符。例如,美国英语的语言代码是 en_US.UTF-8。区域设置会影响在翻译可用时使用的翻译,以及日期、货币和小数的格式。

AttributeError 或缺少 getproxies#

当运行诸如 conda update ipython 之类的命令时,您可能会收到 AttributeError: 'module' object has no attribute 'getproxies' 错误。

原因#

这可能是由旧版本的 requests 或设置了 PYTHONPATH 环境变量引起的。

解决方案#

更新 requests 并确保未设置 PYTHONPATH

  1. 运行 conda info -a 以显示 requests 版本和各种环境变量,例如 PYTHONPATH

  2. 使用 pip install -U requests 更新 requests 版本。

  3. 清除 PYTHONPATH

    • 在 Windows 上,在环境变量设置中清除它。

    • 在 macOS 和 Linux 上,通过从 bash 配置文件中删除它并重新启动 shell 来清除它。

Shell 命令从错误的位置打开#

当您在 conda 环境中运行命令时,conda 无法访问正确的软件包可执行文件。

原因#

在 bash 和 zsh 中,当您输入命令时,shell 会逐个搜索 PATH 中的路径,直到找到该命令。然后 shell 会缓存该位置,这在 shell 术语中称为哈希。当您再次运行命令时,shell 不必再次搜索 PATH。

问题在于在您安装程序之前,您运行了一个命令,该命令加载并哈希了 PATH 上其他位置(例如 /usr/bin)的该程序的另一个版本。然后您使用 conda install 安装了该程序,但 shell 仍然哈希了旧实例。

解决方案#

重新激活环境或运行 hash -r(在 bash 中)或 rehash(在 zsh 中)。

当您运行 conda activate 时,conda 会自动在 bash 中运行 hash -r,在 zsh 中运行 rehash 以清除哈希命令,以便 conda 在 PATH 上的新路径中找到内容。但是,当运行 conda install 时,无法执行此操作,因为该命令必须在 shell 本身内部运行,这意味着您必须自己运行该命令或使用包含该命令的源文件。

这是一个相对罕见的问题,因为这种情况仅在以下情况下发生

  1. 您激活了一个环境或使用 root 环境,然后在其他地方运行命令。

  2. 然后您 conda install 一个程序,然后在不运行 activatedeactivate 的情况下尝试再次运行该程序。

type command_name 命令始终告诉您正在运行的确切内容。这比 which command_name 更好,后者忽略哈希命令并直接搜索 PATH。哈希由 conda activate 或 bash 中的 hash -r 或 zsh 中的 rehash 重置。

程序由于调用 conda Python 而不是系统 Python 失败#

原因#

安装 Anaconda 或 Miniconda 后,运行 python 的程序会从调用系统 Python 切换到调用 root conda 环境中的 Python。如果这些程序依赖于系统 Python 具有 root conda 环境 Python 中没有的某些配置或依赖项,则程序可能会崩溃。例如,Linux Mint 上 Cinnamon 桌面环境的一些用户报告了这些崩溃。

解决方案#

编辑您的 .bash_profile.bashrc 文件,以便不再将 conda 二进制目录(例如 ~/miniconda3/bin)添加到 PATH 环境变量中。您仍然可以使用它们的完整路径名(例如 ~/miniconda3/bin/conda)运行 conda activateconda deactivate

您还可以创建一个包含指向 conda activateconda deactivate 的符号链接的文件夹,然后编辑您的 .bash_profile.bashrc 文件以将此文件夹添加到您的 PATH 中。如果您这样做,运行 python 将调用系统 Python,但运行 conda 命令、conda activate MyEnvconda activate rootconda deactivate 将正常工作。

在运行 conda activate 以激活任何环境(包括在运行 conda activate root 之后)之后,运行 python 将调用活动 conda 环境中的 Python。

UnsatisfiableSpecifications 错误#

原因#

某些 conda 软件包安装规范无法满足。例如,conda create -n tmp python=3 wxpython=3 会产生“Unsatisfiable Specifications”错误,因为 wxPython 3 依赖于 Python 2.7,因此安装 Python 3 的规范与安装 wxPython 3 的规范冲突。

当向 conda 发出无法满足的请求时,conda 会显示如下消息

The following specifications were found to be in conflict:
- python 3*
- wxpython 3* -> python 2.7*
Use ``conda search <package> --info`` to see the dependencies
for each package.

这表明安装 wxpython 3 的规范依赖于安装 Python 2.7,这与安装 Python 3 的规范冲突。

解决方案#

使用 conda search wxpython --infoconda search 'wxpython=3' --info 显示有关此软件包及其依赖项的信息

wxpython 3.0 py27_0
-------------------
file name   : wxpython-3.0-py27_0.tar.bz2
name        : wxpython
version     : 3.0
build number: 0
build string: py27_0
channel     : defaults
size        : 34.1 MB
date        : 2014-01-10
fn          : wxpython-3.0-py27_0.tar.bz2
license_family: Other
md5         : adc6285edfd29a28224c410a39d4bdad
priority    : 2
schannel    : defaults
url         : https://repo.continuum.io/pkgs/free/osx-64/wxpython-3.0-py27_0.tar.bz2
dependencies:
    python 2.7*
    python.app

通过检查每个软件包的依赖项,您应该能够确定安装请求产生冲突的原因,并修改请求,使其可以在没有冲突的情况下得到满足。在本例中,您可以将 wxPython 与 Python 2.7 一起安装

conda create -n tmp python=2.7 wxpython=3

从特定频道安装软件包失败#

原因#

有时需要从特定频道安装特定版本,因为该版本在默认频道中不可用。

解决方案#

以下示例详细描述了问题及其解决方案。

假设您有特定的需求,要使用 Python 3.4 安装 Python cx_freeze 模块。第一步是创建一个 Python 3.4 环境

conda create -n py34 python=3.4

使用此环境,您应该首先尝试

conda install -n py34 cx_freeze

但是,当您这样做时,您会收到以下错误

Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata .........
Solving package specifications: .
Error: Package missing in current osx-64 channels:
- cx_freeze

You can search for packages on anaconda.org with

  anaconda search -t conda cx_freeze

该消息表明在默认软件包频道中找不到 cx_freeze。但是,可能有一个社区创建的版本可用,您可以通过运行以下命令来搜索它

$ anaconda search -t conda cx_freeze
Using Anaconda Cloud api site https://api.anaconda.org
Run 'anaconda show <USER/PACKAGE>' to get more details:
Packages:
     Name                      |  Version | Package Types   | Platforms
     ------------------------- |   ------ | --------------- | ---------------
     inso/cx_freeze            |    4.3.3 | conda           | linux-64
     pyzo/cx_freeze            |    4.3.3 | conda           | linux-64, win-32, win-64, linux-32, osx-64
                                          : http://cx-freeze.sourceforge.net/
     silg2/cx_freeze           |    4.3.4 | conda           | linux-64
                                          : create standalone executables from Python scripts
     takluyver/cx_freeze       |    4.3.3 | conda           | linux-64
Found 4 packages

在本例中,您可以通过 4 个不同的位置尝试获取软件包。它们都没有得到 Anaconda 的官方支持或认可,但 conda 社区的成员提供了许多有价值的软件包。如果您想参考公众意见,那么 Web 界面 提供了更多信息

cx_freeze packages on anaconda.org

请注意,pyzo 组织拥有迄今为止最多的下载量,因此您可能会选择使用他们的软件包。如果是这样,您可以通过在命令行上指定其组织的频道来添加它

$ conda create -c pyzo -n cxfreeze_py34 cx_freeze python=3.4
Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata: ..........
Solving package specifications: .........

Package plan for installation in environment /Users/username/anaconda/envs/cxfreeze_py34:

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    cx_freeze-4.3.3            |           py34_4         1.8 MB
    setuptools-20.7.0          |           py34_0         459 KB
    ------------------------------------------------------------
                                           Total:         2.3 MB

The following NEW packages will be INSTALLED:

    cx_freeze:  4.3.3-py34_4
    openssl:    1.0.2h-0
    pip:        8.1.1-py34_1
    python:     3.4.4-0
    readline:   6.2-2
    setuptools: 20.7.0-py34_0
    sqlite:     3.9.2-0
    tk:         8.5.18-0
    wheel:      0.29.0-py34_0
    xz:         5.0.5-1
    zlib:       1.2.8-0

现在您有了一个使用 Python 3.4 和 cx_freeze 创建的软件环境沙箱。

Conda 自动升级到不需要的版本#

当为应用程序制作 Python 软件包时,您从文件 req.txt 为应用程序创建一个环境,该文件设置了特定版本,例如 python=2.7.9。但是,当您 conda install 您的软件包时,它会自动升级到更高版本,例如 2.7.10

原因#

如果您使用 conda-build 为应用程序制作 conda 软件包,则可以使用特定版本号设置依赖项。声明 - python 的 requirements 行可以改为 - python ==2.7.9。重要的是在 == 运算符之前有 1 个空格,之后没有空格。

解决方案#

在编写版本要求时要谨慎。

Conda 升级错误#

原因#

将 conda 从 4.6.1 降级到 4.5.x,然后尝试 conda install condaconda upgrade conda 将产生类似于以下内容的解决和升级错误

Solving environment: failed
CondaUpgradeError: This environment has previously been operated on by a conda version that's newer than the conda currently being used. A newer version of conda is required.
target environment location: /opt/conda
current conda version: 4.5.9
minimum conda version: 4.6

解决方案#

更改 .condarc 文件。通过直接编辑 .condarc 文件来设置参数:在 conda 版本 4.5.12 中设置 allow_conda_downgrades: true。这将允许您升级。如果您使用的版本早于 4.5.12,请从软件包缓存中再次安装 conda 4.6.1。

示例:如果我的 conda 信息显示软件包缓存:/opt/conda/pkgs,并且我的 Python 版本是 3.7,则在命令行中,键入 conda install /opt/conda/pkgs/conda-4.6.1-py37_0.tar.bz2 以解决该问题。

ValidationError: Invalid value for timestamp#

原因#

当某些软件包使用 conda 4.3.28 安装,然后 conda 降级到 4.3.27 或更早版本时,会发生这种情况。

解决方案#

请参阅 conda/conda#6096

安装 Python 2 后出现 Unicode 错误#

示例:UnicodeDecodeError: 'ascii' codec can't decode byte 0xd3 in position 1: ordinal not in range(128)

原因#

Python 2 无法正确处理 Unicode,尤其是在 Windows 上。在这种情况下,如果您的 PATH 环境变量中的任何字符包含任何非 ASCII 字符,您都会看到此异常。

解决方案#

从 PATH 中删除所有非 ASCII 字符或切换到 Python 3。

Windows 环境尚未激活#

原因#

如果您尚未激活您的环境,您可能会收到警告消息

Warning:
This Python interpreter is in a conda environment, but the environment has
not been activated. Libraries may fail to load. To activate this environment
please see https://conda.io/activation

解决方案#

如果您收到此警告,则需要激活您的环境。要在 Windows 上执行此操作,请在 PowerShell 或命令提示符下的终端中运行:call <your anaconda/miniconda install location>\Scripts\activate base

Windows 上系统找不到指定的路径#

原因#

PATH 不包含所有必要的 conda 目录的条目。 PATH 可能有太多来自第三方软件的条目,这些软件在安装时将自身添加到 PATH 中,尽管用户不需要通过 PATH 查找来运行该软件。

解决方案#

精简 PATH 以减少条目并激活您的环境。

如果某些软件需要在 PATH 上找到(您通过 CLI 运行它),我们建议您创建自己的批处理文件,以便在控制台会话中动态设置 PATH,而不是永久修改系统设置中的 PATH。

例如,一个新的 conda 提示符批处理文件,首先精简 PATH,然后调用正确的激活过程,可能如下所示

set
PATH=”%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;<3rd-party-entries>”
call “<miniconda/anaconda root>\Scripts\activate”

如果您需要从此自定义 conda 提示符运行第三方软件(Windows 内置程序和 Anaconda 以外的软件),那么您应该将这些条目(以及仅严格必要的条目)添加到上面的 set PATH 条目中。请注意,只应存在包裹整个表达式的引号。这就是在批处理脚本中正确设置变量的方式,并且这些变量可以解释 PATH 中任何条目中的任何空格。分配给 PATH 的值中不应有其他引号。

要使第三方软件优先于 conda 提供的同名程序,请在激活 conda 后将其添加到 PATH 中

set
“PATH=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\”
call “<miniconda/anaconda root>\Scripts\activate”
set “PATH=<3rd-party-entries>;%PATH%”

要使 conda 软件优先,请最后调用激活脚本。由于激活会前置 conda 环境 PATH 条目,因此它们具有优先级。

set
PATH=”%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;<3rd-party-entries>”
call “<miniconda/anaconda root>\Scripts\activate”