代码适用于 Anaconda,但不适用于 Python 通过 cmd

Code works on Anaconda but not on Python through cmd

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

当我使用 Anaconda Spyder 时它工作正常

但现在我想根据任务计划

将此代码放入运行

因此我想在 cmd 命令提示符中执行代码

Python "c:\myfolder\predservice.py"

它没有作为任务计划工作

我开始通过在 cmd

中 运行 在 Python 上运行脚本来跟踪问题

我遇到了这个错误,我在 运行通过 Spyder

时没有遇到这个错误

如何避免此类错误

我以为是内存的问题。当我 select 数据集的一个子集时它 运行 很好但是当我 运行 整个数据集时我得到这个错误

>>> 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
>>> 

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

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

我认为您需要在调用脚本之前在 cmd 中激活您的 conda 基础

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