Python &引用;OSError:[Errno 127]密钥已过期";-熊猫df.to_csv方法

Python &引用;OSError:[Errno 127]密钥已过期";-熊猫df.to_csv方法,python,pandas,multiprocessing,oserror,Python,Pandas,Multiprocessing,Oserror,作为多处理过程的一部分运行以下df.to_csv()行时: Process ForkPoolWorker-13: Traceback (most recent call last): File "/home/User1/miniconda3/envs/part_ii_dev-conda/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap File "/home/User1/mi

作为多处理过程的一部分运行以下
df.to_csv()
行时:

Process ForkPoolWorker-13:
Traceback (most recent call last):
  File "/home/User1/miniconda3/envs/part_ii_dev-conda/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
  File "/home/User1/miniconda3/envs/part_ii_dev-conda/lib/python3.8/multiprocessing/process.py", line 108, in run
  File "/home/User1/miniconda3/envs/part_ii_dev-conda/lib/python3.8/multiprocessing/pool.py", line 109, in worker
  <insert stacktrace for code I wrote...>
    filtered_chunk.to_csv(os.path.join(output_dir, "filtered_{}".format(csv_filename)), mode='a+')
  File "/home/User1/miniconda3/envs/part_ii_dev-conda/lib/python3.8/site-packages/pandas/core/generic.py", line 3170, in to_csv
  File "/home/User1/miniconda3/envs/part_ii_dev-conda/lib/python3.8/site-packages/pandas/io/formats/csvs.py", line 185, in save
  File "/home/User1/miniconda3/envs/part_ii_dev-conda/lib/python3.8/site-packages/pandas/io/common.py", line 418, in get_handle
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 914, in _find_spec
  File "<frozen importlib._bootstrap_external>", line 1342, in find_spec
  File "<frozen importlib._bootstrap_external>", line 1314, in _get_spec
  File "<frozen importlib._bootstrap_external>", line 1443, in find_spec
  File "<frozen importlib._bootstrap_external>", line 1483, in _fill_cache
OSError: [Errno 127] Key has expired: '/home/User1/miniconda3/envs/part_ii_dev-conda/lib/python3.8'
filtered_chunk.to_csv(os.path.join(output_dir,“filtered_{}.format(csv_filename)),mode='a+'))
我得到以下错误。我不知道问题出在哪里(下面的代码片段是针对一个
多处理过程的):

processforkPoolWorker-13:
回溯(最近一次呼叫最后一次):
文件“/home/User1/miniconda3/envs/part_ii_dev-conda/lib/python3.8/multiprocessing/process.py”,第315行,在引导程序中
文件“/home/User1/miniconda3/envs/part_ii_dev-conda/lib/python3.8/multiprocessing/process.py”,第108行,正在运行
worker中的文件“/home/User1/miniconda3/envs/part_ii_dev-conda/lib/python3.8/multiprocessing/pool.py”,第109行
过滤的_chunk.to _csv(os.path.join(输出_dir,“过滤的{}”.format(csv_filename)),mode='a+'))
文件“/home/User1/miniconda3/envs/part_ii_dev-conda/lib/python3.8/site packages/pandas/core/generic.py”,第3170行,输入至csv
文件“/home/User1/miniconda3/envs/part_ii_dev-conda/lib/python3.8/site packages/pandas/io/formats/csvs.py”,第185行,保存
文件“/home/User1/miniconda3/envs/part_ii_dev-conda/lib/python3.8/site packages/pandas/io/common.py”,第418行,在get_handle中
文件“”,第991行,在“查找”和“加载”中
文件“”,第971行,在“查找”和“加载”中解锁
文件“”,第914行,在“查找”规范中
文件“”,第1342行,在查找规范中
文件“”,第1314行,在规格中
文件“”,第1443行,在查找规范中
文件“”,第1483行,在缓存中
OSError:[Errno 127]密钥已过期:'/home/User1/miniconda3/envs/part_ii_dev-conda/lib/python3.8'
在上面的stacktrace导致每个进程失败后,我得到一个
总线错误(内核转储)
打印输出

“密钥已过期”让我想到一些需要验证或提供有时间限制的访问(文件指针?访问服务器的密钥/票据?)。我在服务器上的
tmux
会话中运行了脚本,因此我认为访问服务器不会是一个问题(一些错误127的谷歌搜索指出了装载问题,但我不认为这是一个问题)。由于脚本在
get\u handle
方法中失败,基本上返回一个文件句柄,所以文件指针似乎是问题所在,但我不确定原因


如果有帮助的话,我正在使用
多处理
来并行化一个函数,但是不同的进程会写入不同的csv文件,所以这不应该是一个问题。

您的主目录是否也安装在您更改密码的Windows机器上?“密钥已过期”可能发生在从密码已更改或过期的Windows计算机装载共享目录时。据我所知,这是一台Ubuntu计算机,而不是WSL。我只需重新运行代码,代码就成功了。我所在的大学使用Kerberos协议,该协议要求定期更新身份验证票证。如果在另一台本地服务器上使用资源的Python脚本在
tmux
中运行太长时间,我有时会出现此错误。这所大学开发了一个特殊的“
tmux
+Kerberos”程序,我们必须使用它来防止断开连接。这很有趣,你有链接吗?我也在使用Kerberos身份验证访问服务器(在服务器上运行
tmux
)。我认为
tmux
的意义在于,当您断开连接时,程序不会停止。对不起@peractio,我无法访问程序的源代码,因此无法解释它是如何工作的。我也不熟悉Kerberos。但我认为我理解的是,使用Kerberos连接到服务器的客户端连接(如tmux)必须采取步骤定期重新验证其Kerberos票证。因此,这个自定义程序可能会定期调用
kinit-R
。也许这会有帮助: