首页 > 解决方案 > 为什么使用 Conda 虚拟环境时回溯不引用 Python 文件?

问题描述

概括

在 pandas重命名函数中找不到关键字参数,因为我的编译器使用的是我的核心 Python,它有一个旧版本的 Pandas,即使它应该使用我的激活的 Conda 环境,它有一个带有关键字参数的更新的 Pandas 版本。我不明白为什么 Traceback 引用我的核心 Python 和 Pandas 文件夹而不是虚拟环境。

Python

df.rename(columns={
            'COLUMN A':'col_a',
            'COLUMN B':'col_b',},
        inplace=True, errors='raise')

追溯

Traceback (most recent call last):
  File "C:\Users\testuser\AppData\Local\Continuum\anaconda3\lib\site-packages\flask\app.py", line 2309, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\Users\testuser\AppData\Local\Continuum\anaconda3\lib\site-packages\flask\app.py", line 2295, in wsgi_app
    response = self.handle_exception(e)
  File "C:\Users\testuser\AppData\Local\Continuum\anaconda3\lib\site-packages\flask\app.py", line 1741, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "C:\Users\testuser\AppData\Local\Continuum\anaconda3\lib\site-packages\flask\_compat.py", line 35, in reraise
    raise value
  File "C:\Users\testuser\AppData\Local\Continuum\anaconda3\lib\site-packages\flask\app.py", line 2292, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Users\testuser\AppData\Local\Continuum\anaconda3\lib\site-packages\flask\app.py", line 1815, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\Users\testuser\AppData\Local\Continuum\anaconda3\lib\site-packages\flask\app.py", line 1718, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "C:\Users\testuser\AppData\Local\Continuum\anaconda3\lib\site-packages\flask\_compat.py", line 35, in reraise
    raise value
  File "C:\Users\testuser\AppData\Local\Continuum\anaconda3\lib\site-packages\flask\app.py", line 1813, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Users\testuser\AppData\Local\Continuum\anaconda3\lib\site-packages\flask\app.py", line 1799, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "C:\Users\testuser\AppData\Local\Continuum\anaconda3\lib\site-packages\flask_login\utils.py", line 272, in decorated_view
    return func(*args, **kwargs)
  File "C:\Users\testuser\Programming\WebApps\testapp\app\main\routes.py", line 52, in upload
    clean_usage_data(df)
  File "C:\Users\testuser\Programming\WebApps\testapp\app\data\move.py", line 94, in clean_usage_data
    inplace=True, errors='raise')
  File "C:\Users\testuser\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\util\_decorators.py", line 197, in wrapper
    return func(*args, **kwargs)
  File "C:\Users\testuser\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\frame.py", line 4025, in rename
    return super(DataFrame, self).rename(**kwargs)
  File "C:\Users\testuser\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\generic.py", line 1072, in rename
    'argument "{0}"'.format(list(kwargs.keys())[0]))
TypeError: rename() got an unexpected keyword argument "errors"

错误

好的,所以回溯非常简单,errors对于 pandas 数据框 rename 方法来说不是一个 kwarg,至少对于我的核心包中的旧版本来说不是,但是它在rename 的较新版本中。但是,我正在使用已激活的 Conda 虚拟环境(名为“nex_verify”),并带有更新的 Pandas 包(其中包含错误 kwarg,我手动检查了该包)。

正如预期的那样,我能够通过更新我的核心 pandas 包来解决这个问题。

问题

既然我使用的是我的 Conda 环境,为什么 Traceback 不是指那些文件夹,而是指 pandas 的核心包文件夹?

编辑sys.executable无论激活虚拟环境, 我都以相同的结果进行了测试:

C:\Users\testuser\Programming\WebApps\testapp>conda activate venv
(venv) C:\Users\testuser\Programming\WebApps\testapp>
>>> import sys
>>> sys.executable
'C:\\Users\\testuser\\AppData\\Local\\Continuum\\anaconda3\\python.exe'

标签: pythonpandascondarenametraceback

解决方案


推荐阅读