【问题标题】:No module named certifi没有名为 certifi 的模块
【发布时间】:2021-04-10 12:38:43
【问题描述】:

在本地目录上执行python3(Python 3.6.8)脚本时,效果很好,但是在slurm中运行sbatch作业时,抱怨certifi。

python3 -m pip install certifi

Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: certifi in /usr/local/lib/python3.6/site-packages (2020.12.5)

在 python 代码中添加以下内容:

import sys
import os
sys.path.append(os.getcwd())

或者这个:

import sys
import os
module_path = os.path.abspath(os.getcwd())

if module_path not in sys.path:

    sys.path.append(module_path)

同样的错误发生。好像安装了certifi。

pip show certifi

Name: certifi
Version: 2020.12.5
Summary: Python package for providing Mozilla's CA Bundle.
Home-page: https://certifiio.readthedocs.io/en/latest/
Author: Kenneth Reitz
Author-email: me@kennethreitz.com
License: MPL-2.0
Location: /usr/local/lib/python3.6/site-packages
Requires:
Required-by: requests

运行python代码后的错误(python代码中没有'import certifi'行):

Traceback (most recent call last):
  File "/home/username/test/test.py", line 19, in <module>
    from textattack.augmentation import WordNetAugmenter, EmbeddingAugmenter, EasyDataAugmenter, CharSwapAugmenter
  File "/home/username/.local/lib/python3.6/site-packages/textattack/__init__.py", line 12, in <module>
    from . import (
  File "/home/username/.local/lib/python3.6/site-packages/textattack/attack_recipes/__init__.py", line 21, in <module>
    from .attack_recipe import AttackRecipe
  File "/home/username/.local/lib/python3.6/site-packages/textattack/attack_recipes/attack_recipe.py", line 9, in <module>
    from textattack.shared import Attack
  File "/home/username/.local/lib/python3.6/site-packages/textattack/shared/__init__.py", line 11, in <module>
    from . import utils
  File "/home/username/.local/lib/python3.6/site-packages/textattack/shared/utils/__init__.py", line 1, in <module>
    from .install import *
  File "/home/username/.local/lib/python3.6/site-packages/textattack/shared/utils/install.py", line 9, in <module>
    import requests
  File "/home/username/.local/lib/python3.6/site-packages/requests/__init__.py", line 118, in <module>
    from . import utils
  File "/home/username/.local/lib/python3.6/site-packages/requests/utils.py", line 25, in <module>
    from . import certs
  File "/home/username/.local/lib/python3.6/site-packages/requests/certs.py", line 15, in <module>
    from certifi import where
ModuleNotFoundError: No module named 'certifi'

错误(在python代码中有'import certifi'行):

Traceback (most recent call last):
  File "/home/username/projecttest_LR_attack/LR_attack.py", line 17, in <module>
    import certifi
ModuleNotFoundError: No module named 'certifi'

有什么办法可以解决这个问题?

【问题讨论】:

    标签: python cron slurm modulenotfounderror certifi


    【解决方案1】:

    计算节点上是否安装了与本地相同的模块?您可能需要咨询 Slurm 管理员。

    【讨论】:

    • 谢谢。我得到的建议是创建一个包含所有需要安装的 VM。
    【解决方案2】:

    这可能意味着 /usr/local/lib/python3.6/site-packages/ 不是 slurm 中的 sbatch 作业可以访问的 PYTHONPATH 环境变量。您可以在运行时添加或附加它:

    import sys
    sys.path.append('/usr/local/lib/python3.6/site-packages/')
    

    【讨论】:

    • 谢谢你的回答,PApostol。但错误仍然是一样的......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-28
    • 2017-12-30
    • 2018-01-06
    • 2018-11-11
    • 2015-04-10
    • 2013-11-27
    • 2014-02-17
    相关资源
    最近更新 更多