繁体   English   中英

ImportError:无法从“mypackage”(未知位置)导入名称“app”

[英]ImportError: cannot import name 'app' from 'mypackage' (unknown location)

我知道类似的问题很少,但没有一个对我有帮助,所以我正在写一个新的。 这是我的目录结构:

- mypackage
    - __init__.py
- run.py
- requirements.txt

run.py 内容:

from mypackage import app

app.run(host='localhost', port=3648)

mypackage/_ init _.py 内容:

from flask import Flask

app = Flask(__name__)

这是完整的错误:

C:\...\parser>python run.py
Traceback (most recent call last):
  File "run.py", line 1, in <module>
    from mypackage import app
ImportError: cannot import name 'app' from 'mypackage' (unknown location)

这似乎是一个错误,或者我做错了什么..

更新:PYTHONPATH 的环境检查:

Traceback (most recent call last):
  File "run.py", line 6, in <module>
    print(os.environ['PYTHONPATH'])
  File "C:\Users\white\AppData\Local\Programs\Python\Python37\lib\os.py", line 678, in __getitem__
    raise KeyError(key) from None
KeyError: 'PYTHONPATH'

tl;dr:重命名你的包

你的包裹真的被命名为mypackage吗? 我猜不是。 :)

我有同样的错误。 就我而言,我为mypackage选择的名称恰好是我不知道的现有 Python 库的名称。 一旦我重命名了我的包,错误就消失了。

我猜当您运行run.py时,当前的又名工作目录不是该文件所在的位置。 所以mypackage不在sys.path上。

我面临同样的问题。 我将一些文件从 init.py 重命名为' __init__.py '

当 Pipenv 虚拟环境以某种方式损坏时发生在我身上。 删除了 virtualenv,让 Pipenv 新建一个。

它再次起作用。

我在这里看不到的一个答案是,如果模块没有以.py为后缀,Python 将无法识别它们。 就我而言,事实证明有问题的模块没有正确后缀。 如果您收到此错误,请检查您的所有模块文件是否正确命名。

在文件夹中保留一个init .py 文件。 然后它将作为模块导入,否则它将给出与未知位置相同的错误

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM