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

时间:2019-04-11 14:27:34

标签: python-3.x anaconda

我想从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 Notebook使用的相同环境中运行Python脚本吗?

2 个答案:

答案 0 :(得分:3)

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

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

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

我在下面分享了一个例子。在这种情况下,我将从Anaconda Prompt内部运行这些命令,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)

您得到相同的输出吗?

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

答案 1 :(得分:0)

我有 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 脚本将使用删除的文件作为参数运行。