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

3

我想在Windows命令提示符中运行Python代码。当我从Anaconda Prompt、Spyder或Jupyter Notebook运行脚本时,某些功能在从Windows命令提示符运行相同脚本时不可用。例如,Pandas中的read.csv方法可以读取一个2.8GB的制表符分隔文本文件,但是当我在已安装Python副本的环境中从Windows命令提示符运行相同的脚本时,会出现以下消息:"pandas.errors.ParserError: Error tokenizing data. C error: out of memory"。我假设Anaconda环境安装了用于读取大型文本文件的包。我尝试从Anaconda默认存储Python脚本的我的主目录下运行脚本,但我仍然收到相同的"out of memory"消息。我还从C:[我的主目录]\AppData\Local\Continuum\anaconda3运行了脚本,这是Anaconda显然安装的位置,但我仍然遇到相同的内存问题。有没有人知道如何在与Anaconda Prompt、Spyder和Jupyter Notebooks使用相同的环境中运行Python脚本?

2个回答

3
这可能是由于使用不同的Python解释器导致的。例如,在Windows上,32位版本的Python只有2GB的内存可用。有可能你正在命令行中使用它,而在笔记本中使用的是64位解释器。
使用sys包比较这些环境。从命令行尝试以下命令。
python -c "from __future__ import print_function; import sys; print(sys.version); print(sys.executable)"

我在下面分享了一个例子。在这种情况下,我是从Anaconda提示符内运行这些命令的,这个提示符似乎预装在所有版本的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)

你是否得到了相同的输出?

如果笔记本和命令行之间的输出是相同的,那么这可能不是你正在遇到的问题。如果是这样,请分享你从笔记本内部执行的代码以及从命令行运行的脚本代码。


你找到问题了,Eric!我确实单独安装了Python以测试在Anaconda之外运行Python文件的能力。当我从Python提示符而不是Anaconda提示符中运行你建议的命令时,它返回了以下内容: - stevep
另一个谜团是我如何安装了32位版本的Python。当你访问https://www.python.org/downloads时,你会看到一个大按钮标记为“下载Python 3.7.3”。点击该按钮将下载32位版本的Python。你需要向下滚动并点击下载Python 3.7.3的超文本链接。这将带你到https://www.python.org/downloads/release/python-373/,在那里你会看到下载64位版本Python的选项。 - stevep

0

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

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

我成功创建了一个可用的Conda环境。这样,我也能够通过拖放方式运行Python脚本。我创建了一个链接到需要特定Conda环境的真实Python脚本,并将链接的目标属性更改为

"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脚本将使用拖放的文件作为参数运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接