代码适用于 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 脚本。
- 将您的 32 位 python 替换为 64 位版本
- 或者安装一个单独的 64 位 python 并告诉任务计划程序使用它来 运行
你的 .py 文件。
我认为您需要在调用脚本之前在 cmd 中激活您的 conda 基础
call <path>\anaconda\Scripts\activate base
<path>\anaconda\python.exe <path>\scriptname.py
我有代码 运行 超过 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 脚本。
- 将您的 32 位 python 替换为 64 位版本
- 或者安装一个单独的 64 位 python 并告诉任务计划程序使用它来 运行 你的 .py 文件。
我认为您需要在调用脚本之前在 cmd 中激活您的 conda 基础
call <path>\anaconda\Scripts\activate base
<path>\anaconda\python.exe <path>\scriptname.py