【问题标题】:Replicating Anaconda Environment From Windows Command Prompt从 Windows 命令提示符复制 Anaconda 环境
【发布时间】:2019-09-02 05:34:09
【问题描述】:

我想从 Windows 命令提示符运行 Python 代码。当我从 Windows 命令提示符运行相同的脚本时,我在 Anaconda 环境中运行的脚本(即来自 Anaconda Prompt、Spyder 或 Jupyter Notebook)中的某些功能不可用。例如,当脚本在 Anaconda 环境中运行时,Pandas 中的 read.csv 方法可以读取 2.8 GB 制表符分隔的文本文件,但是当从环境中的 Windows 命令提示符运行相同的脚本时,我会收到以下消息我在哪里安装了 Python 的副本:“pandas.errors.ParserError:错误标记数据。C 错误:内存不足”。我假设 Anaconda 环境安装了一个用于读取大型文本文件的软件包。我尝试从我的主目录运行脚本,Anaconda 默认存储我的 Python 脚本,但我仍然收到相同的“内存不足”消息。我还从 C:[my home directory]\AppData\Local\Continuum\anaconda3 运行脚本,显然安装了 Anaconda,我遇到了同样的内存问题。有人知道我如何在 Anaconda Prompt、Spyder 和 Jupyter Notebooks 使用的相同环境中运行 Python 脚本吗?

【问题讨论】:

    标签: python-3.x anaconda


    【解决方案1】:

    这可能是由于使用了不同的 Python 解释器造成的。例如,Windows 中的 32 位版本的 Python 只能使用 2GB of memory。您可能会在命令行中使用它,而不是在笔记本中使用 64 位解释器。

    使用sys 包比较环境。在命令行中,尝试以下命令。

    python -c "from __future__ import print_function; import sys; print(sys.version); print(sys.executable)"
    

    我在下面分享了一个示例。在这种情况下,我在 Anaconda Prompt 中运行这些命令,该 Prompt 随(所有?)版本的 Anaconda 一起安装。

    (base) C:\Users\my.user.name>python -c "from __future__ import print_function; import sys; print(sys.version); print(sys.executable)"
    3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 64 bit (AMD64)]
    C:\ProgramData\Anaconda3\python.exe
    
    (base) C:\Users\my.user.name>conda env list
    # conda environments:
    #
    base                  *  C:\ProgramData\Anaconda3
    colors                   C:\Users\my.user.name\.conda\envs\colors
    someotherenv             C:\Users\my.user.name\.conda\envs\someotherenv
    hellostevep              C:\Users\my.user.name\.conda\envs\hellostevep
    
    (base) C:\Users\my.user.name>conda activate colors
    
    (colors) C:\Users\my.user.name>python -c "from __future__ import print_function; import sys; print(sys.version); print(sys.executable)"
    3.7.2 (default, Feb 21 2019, 17:35:59) [MSC v.1915 64 bit (AMD64)]
    C:\Users\my.user.name\.conda\envs\colors\python.exe
    

    请注意,python.exe 根据我的环境而有所不同。您的操作系统上可能有与 Anaconda 不同的其他 Python 环境。例如,您可能为 Windows PowerShell 设置了 Python 环境。如果是这样,您也可以在 PowerShell 提示符下运行命令 python -c "from __future__ import print_function; import sys; print(sys.version); print(sys.executable)",然后比较输出。

    在运行 Pandas 方法的 Jupyter Notebook 中,尝试在单元格内运行类似的代码(示例如下)。

    import sys
    print(sys.version)
    print(sys.executable)
    

    你得到相同的输出吗?

    如果您的笔记本和命令行的输出相同,则这可能不是您遇到的问题。如果是这样,您能否分享您从笔记本内部执行的代码以及您在命令行上运行的脚本中的代码?

    【讨论】:

    • 你发现了问题,埃里克!我确实将 Python 与我的 Anaconda 安装分开安装,以测试我在 Anaconda 之外运行 Python 文件的能力。当我从 Python 提示符而不是 Anaconda 提示符运行您建议的命令时,它返回以下内容:
    • 另一个谜团是我是如何安装 32 位版本的 Python 的。当您转到 python.org/downloads 时,您会看到一个标有“下载 Python 3.7.3”的大按钮。单击该按钮将下载 32 位版本的 Python。您需要进一步向下滚动并单击 Download hyptertext for Python 3.7.3。这会将您带到python.org/downloads/release/python-373,在那里您将看到下载 64 位版本 Python 的选项。
    【解决方案2】:

    我有 Miniconda,但我想我的解决方案也适用于 Anaconda。从 Windows 命令提示符我运行

    "C:\Users\<username>\Miniconda3\Scripts\activate.bat"  environment_to_use
    

    我得到了一个工作的 Conda 环境。通过这种方式,我还能够通过拖放运行 python 脚本。我创建了一个指向需要特定 Conda 环境的真实 python 脚本的链接,并将链接的 Destination 属性更改为

    "C:\Users\<username>\Miniconda3\Scripts\activate.bat" environment_to_use  &&  "C:\Users\<username>\Miniconda3\envs\<environment_to_use>\python.exe"  "<path>\my_python_script.py"
    

    这样,如果我在指向 python 脚本的链接上删除任何文件,python 脚本将使用删除的文件作为参数运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-29
      • 2022-06-20
      • 2018-04-04
      • 1970-01-01
      • 2010-09-15
      • 2012-02-12
      • 2012-03-15
      • 2016-04-23
      相关资源
      最近更新 更多