Python:__init__.py 存在时的 ImportError
我在 C:/mycp/applicationl
这个文件夹里有一个文件叫做 run.py,里面写了以下代码:
from che import wserver
from applicationl import app
这个文件夹 C:/mycp/applicationl
里还有一个 __init__.py
文件。
当我运行 python run.py
的时候,出现了以下错误:
File "run.py", line 8, in <module>
from application1 import app
ImportError: No module named 'application1'
但是 __init__.py
文件是存在的,而且这个文件里有 app 的内容:
app = Flask(__name__, static_url_path='')
我到底哪里做错了呢?
4 个回答
0
试着把 'C:/mycp/application1' 加到环境变量 PYTHONPATH 里。
0
如果你在 C:/mycp/application1
这个文件夹里,你就不能从 application1
导入东西,除非这个文件夹在你的 sys.path
里。
0
试试用 from . import app
,因为 app.py
和 run.py
在同一个文件夹里。
3
你不应该把文件当作脚本来运行,同时还指望它的目录能被当作一个包来使用。
要让 applicationl
被当作一个包,必须把它的父级目录添加到 Python 的 sys.path
查找路径中。但是当你运行一个脚本时,实际上是把这个目录本身添加进去了。
手动把 C:/mycp
目录加到 sys.path
里并不是个好主意。你可以在这里直接导入其他 Python 代码作为顶层模块,或者创建一个 C:/mycp/applicationl
的子目录,并把它当作包来使用。
如果不想创建额外的包,你的 run.py
代码应该改成:
from che import wserver
from app import app
并把 __init__.py
重命名为 app.py
。
另外,你也可以创建一个新的子目录;这个子目录甚至可以再次命名为 applicationl
,然后把 __init__
移到那个子目录里。