【问题标题】:Python gets ModuleNotFoundError when run the program, but can import the module in python environmentPython在运行程序时得到ModuleNotFoundError,但是在python环境下可以导入模块
【发布时间】:2020-11-13 16:19:21
【问题描述】:

我在导入自己的包时遇到问题。我在虚拟环境中。我得到如下所示的错误。

File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'my_package.test'

但是,如果我运行python并导入包,就没有问题。

poetry run python
/home/user1/.poetry/lib/poetry/_vendor/py2.7/subprocess32.py:149: RuntimeWarning: The _posixsubprocess module is not being used. Child process reliability may suffer if your program uses threads.
  "program uses threads.", RuntimeWarning)
Python 3.7.5 (default, Nov  7 2019, 10:50:52) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import my_package.test

我不知道这里发生了什么。希望有人可以帮助我。提前致谢。

【问题讨论】:

    标签: python modulenotfounderror


    【解决方案1】:

    确保您的模块位于您的文件可访问的区域(即同一文件夹)。还要确保没有重复的文件

    【讨论】:

    • 我检查了,我有模块的 init.py,没有重复的文件。
    【解决方案2】:

    通常这意味着您认为您使用的是同一个解释器,而实际上您并非如此。在脚本的顶部,复制 shebang 行中的内容并按原样运行。

    换句话说,如果它读取

    #!/usr/bin/env python
    

    然后运行它而不是你用来调用解释器的那个

    /usr/bin/env python
    

    我敢打赌,您将无法在该解释器中导入。

    【讨论】:

    • 你的意思是我可能会使用不同版本的python?我在脚本中没有 shebang 行。它运行在由诗歌管理的虚拟环境中,python 是 3.7.5。
    • 好的,我没有从你的问题中得到上下文,我不使用诗歌。您可能会考虑使上下文更加明确。不过,问题可能源于路径不同,或者 python 可执行文件不同。抱歉,我帮不上忙。
    猜你喜欢
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    相关资源
    最近更新 更多