Python在同一文件夹中找不到模块

181

我的Python无法在相同目录中找到任何模块。我做错了什么?(Python2.7)

因此,我有一个名为“2014_07_13_test”的目录,其中包含两个文件:

  1. test.py
  2. hello.py

其中hello.py文件内容为:

# !/usr/local/bin/python
# -*- coding: utf-8 -*-

def hello1():
    print 'HelloWorld!'

和 test.py:

# !/usr/local/bin/python
# -*- coding: utf-8 -*-

from hello import hello1

hello1()

依然给我带来 Python

>>> Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 4, in <module>
ImportError: No module named hello

有什么问题吗?


3
你是如何执行脚本的?还有 import sys; sys.path 的输出是什么? - Salem
1
尝试输入 >>> import test - martineau
@Casy_fill 你是在文件所在的目录中运行程序吗?对于导入来说,导入和被导入的文件共享一个目录并不重要。重要的是,你的Python解释器已经正确设置了当前目录。 - Jan Vlcinsky
请仔细检查您是否从预期的根目录运行文件。 - carloswm85
16个回答

1

当我使用命令行创建新文件时,导入才能正常工作,而不是使用Visual Studio Code的“创建新文件”命令。

在命令行中:

touch your_file.py

然后,按照其他人的建议进行导入

from your_file import your_function

0

同时重新检查文件和模块的拼写是否有错。

例如:

import passwords

当文件名保存为password时,缺少了一个s。

这可能听起来很明显,但有时候当上述所有建议都不起作用时,问题可能就是这么简单 :)


0
这种问题通常发生在项目路径被更改时。您需要使用以下命令:

cd path\to\the\files_path

即可解决。

0

很可能您的工作目录仍然设置为父文件夹。要解决此问题,您需要首先按以下方式检查当前工作目录:

import os
print(os.getcwd())

如果与包含模块的目录不同,请按以下方式设置正确的目录:

os.chdir(os.getcwd()+'/correct_project_folder')

0

我刚遇到了这个问题。我有一个在app.py文件中启动的flask应用程序。当我决定要对其进行一些清理时,我发现许多其他文件散布在同一个目录中,因此我创建了一个名为“local_lib”的子目录,并将除app.py之外的所有.py文件移动到其中。然后,我更改了app.py中的导入行,使其看起来像这样...

from local_lib.user import User

但是我似乎无法在local_lib目录中相互导入文件。我的目录结构如下...

/
  - app.py
  - local_lib/
     - users.py
     - app_config.py
     - data_ops.py
     - db_connect.py
     - forms.py
     - logger.py
     - search_dao.py

我最终意识到应用程序是在 app.py 所在目录的上下文中运行的,因此我必须将我的导入更改为全部看起来像这样...

from local_lib import search_dao
from local_lib import app_config as cfg
from local_lib.user import User
from local_lib import logger

这个问题已经解决了。PyCharm不喜欢它,因为它有所有导入的红色波浪线,但它可以工作。

我还在学习Python,所以这很烦人,但它就是这样。


-1
同样的错误,但我没有找到我的情况的答案,也许有人需要我的解决方案。
看起来在PyCharm中我创建了一个.py文件,但是在我的项目文件的Windows目录中一些空白的地方没有.py。所以我直接在目录中更改了扩展名,然后它就可以工作了。 在更改扩展名之前的图片

这并没有真正回答问题。如果您有不同的问题,可以通过点击提问来提出。如果您想在此问题获得新的答案时得到通知,您可以关注此问题。一旦您拥有足够的声望,您还可以添加悬赏以吸引更多关注。- 来自审核 - chrslg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接