【问题标题】:Code works on Anaconda but not on Python through cmd代码可以在 Anaconda 上运行,但不能通过 cmd 在 Python 上运行
【发布时间】:2019-12-30 05:40:57
【问题描述】:

我的代码运行超过 7000 列数据集和大约 25 万条记录

当我使用 Anaconda Spyder 时效果很好

但现在我想根据任务计划运行这段代码

因此我想将 cmd 命令提示符中的代码执行为

Python "c:\myfolder\predservice.py"

它没有作为任务计划工作

我通过在 cmd 中运行 Python 上的脚本来开始跟踪问题

我得到了这个错误,我在运行 Spyder 时没有得到这个错误

如何避免此类错误

我以为是因为记忆。当我选择数据集的一个子集时,它运行良好,但是当我运行整个数据集时,我得到了这个错误

>>> df =pd.concat([df.drop('PreviousDRGs', 1), pd.get_dummies(df['PreviousDRGs'] .str.split(",", expand=True), prefix
 = 'PreviousDRGs').max(level=0, axis=1).asty pe(np.int8)], axis=1)


 Traceback (most recent call last):   File "<stdin>", line 1, in
 <module>   File
 "C:\Users\decisionsupport\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\generic.py",
 line 11616, in stat_func return self._agg_by_level(name, axis=axis,
 level=level, skipna=skipna)   


 File
 "C:\Users\decisionsupport\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\generic.py",
 line 10440, in _agg_by_level grouped = self.groupby(level=level,
 axis=axis, sort=False)   


 File
 "C:\Users\decisionsupport\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\generic.py",
 line 7894, in groupby **kwargs   



 File
 "C:\Users\decisionsupport\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\groupby\groupby.py",
 line 2522, in groupby return klass(obj, by, **kwds)   



 File
 "C:\Users\decisionsupport\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\groupby\groupby.py",
 line 363, in __init__ obj._consolidate_inplace()   



 File
 "C:\Users\decisionsupport\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\generic.py",
 line 5252, in _consolidate_inplace self._protect_consolidate(f)   



 File
 "C:\Users\decisionsupport\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\generic.py",
 line 5241, in _protect_consolidate result = f()   




 File
 "C:\Users\decisionsupport\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\generic.py",
 line 5250, in f self._data = self._data.consolidate()   



 File
 "C:\Users\decisionsupport\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\internals\managers.py",
 line 932, in consolidate bm._consolidate_inplace()   





 File
 "C:\Users\decisionsupport\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\internals\managers.py",
 line 937, in _consolidate_inplace self.blocks =
 tuple(_consolidate(self.blocks))   




 File
 "C:\Users\decisionsupport\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\internals\managers.py",
 line 1913, in _consolidate list(group_blocks), dtype=dtype,
 _can_consolidate=_can_consolidate   



 File "C:\Users\decisionsupport\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\internals\blocks.py",
 line 3323, in _merge_blocks new_values = new_values[argsort]   
 numpy.core._exceptions.MemoryError: Unable to allocate array with
 shape (4524, 1 38299) and data type uint8
>>> 

【问题讨论】:

  • 请重新粘贴您的回溯并将其格式化为代码。这样不可读。
  • 您在命令提示符中调用的 Python 可执行文件和 Spyder 应用程序是否属于同一 python 安装/环境?
  • @Xukrao 我不调用可执行文件。我调用 .py 文件
  • 当您在命令提示符中输入Python "c:\myfolder\predservice.py" 时,您正在调用 python.exe 并将其提供给 .py 文件。错误回溯似乎表明此 python 可执行文件是C:\Users\decisionsupport\AppData\Local\Programs\Python 中安装的一部分。您的 Spyder 应用程序是同一安装的一部分,还是单独安装?
  • 只是猜测,但是否 Anaconda 使用的是 64 位 python?您的错误回溯显示您的任务计划程序正在使用 32 位 python 运行您的 .py 脚本。

标签: python python-3.x anaconda spyder


【解决方案1】:

看起来 Anaconda 可能正在使用 64 位 python。您的错误回溯显示您的任务计划程序正在使用 32 位 python 运行您的 .py 脚本。要么

  1. 将 32 位 python 替换为 64 位版本
  2. 或安装一个单独的 64 位 python 并告诉任务计划程序使用它来运行 你的 .py 文件。

【讨论】:

【解决方案2】:

我认为你需要在调用脚本之前在 cmd 中激活你的 conda 库

call <path>\anaconda\Scripts\activate base
<path>\anaconda\python.exe <path>\scriptname.py

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 2019-03-05
    • 2017-07-20
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    相关资源
    最近更新 更多