从Windows命令提示符复制Anaconda环境

问题描述 投票:2回答:1

我想从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运行脚本:[我的主目录] \ AppData \ Local \ Continuum \ anaconda3,显然安装了Anaconda,我遇到了同样的内存问题。有人知道如何在Anaconda Prompt,Spyder和Jupyter笔记本使用的相同环境中运行Python脚本吗?

python-3.x anaconda
1个回答
3
投票

这可能是因为使用不同的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内部运行这些命令,它安装了(所有?)版本的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)

你得到相同的输出?

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

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