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

我的 python 在同一个目录中找不到任何模块。 我做错了什么? (python2.7)

因此,我有一个目录“2014 _ 07 _ 13 _ test”,其中包含两个文件:

  1. Test.py
  2. 你好,我是派比

Where hello.py:

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


def hello1():
print 'HelloWorld!'

Py:

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


from hello import hello1


hello1()

还是蟒蛇给我的

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

怎么了?

399697 次浏览

你的代码没问题,我怀疑你的问题是如何启动它。

您需要从“2014 _ 07 _ 13 _ test”目录启动 python。

在“2014 _ 07 _ 13 _ test”目录中打开命令提示符和“ cd”。

例如:

$ cd /path/to/2014_07_13_test
$ python test.py

如果不能像这样将 cd 添加到目录中,可以将其添加到 Sys.path

在 test.py 中:

import sys, os
sys.path.append('/path/to/2014_07_13_test')

或设置/编辑 PYTHONPATH

一切都会好起来的。

... ... 您的“ shebang”行(两个文件中的第一行)有一个小错误,’#’和’’之间不应该有一个空格!'

有一个 更好的东西你应该使用。

另外,您不需要在每个文件上都使用 shebang 行... ... 只需要那些您打算作为可执行文件从您的 shell 运行的文件。

将 test.py 中的导入更改为:

from .hello import hello1

我也遇到过类似的问题,我通过显式地将文件的目录添加到路径列表中来解决这个问题:

import os
import sys


file_dir = os.path.dirname(__file__)
sys.path.append(file_dir)

之后,从同一个目录导入没有任何问题。

下面是我使用的通用解决方案,它解决了从同一文件夹中的模块导入的问题:

import os.path
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))

把这个放在模块的顶部,就会出现错误“ No module name xxxx”

在我的例子中,Python 无法找到它,因为我将代码放在带有连字符的模块中,例如 my-module。当我把它改成 my_module的时候,它起作用了。

我遇到了这个问题。我有三个文件夹在同一个目录,所以我必须指定哪个文件夹。 例如: 从文件夹导入脚本

下面的内容并不能解决 OP 的问题,但是标题和错误正是我所面临的问题。

如果你的项目中有一个 setup.py脚本,你可以用 python3 -m pip install -e .或者 python3 setup.py install或者 python3 setup.py develop安装你所在的包,这个包会被安装,但是仍然是可编辑的(所以在导入这个包的时候可以看到代码的变化)。如果它没有 setup.py理清头绪

不管怎样,OP 面临的问题似乎不再存在了?

文件 one.py:

def function():
print("output")

文件 two.py:

#!/usr/bin/env python3


import one
one.function()
chmod +x two.py # To allow execution of the python file
./two.py # Only works if you have a python shebang


Command line output: output

其他解决方案似乎“肮脏”

在具有2个测试文件的 OP 的情况下,修改它们以使其工作可能是可行的。但是,在其他实际情况下,可能不推荐使用其他答案中列出的方法。它们要求您修改 python 代码或限制您的灵活性(从特定目录运行 python 文件) ,并且通常会引入麻烦。如果您刚刚克隆了一个项目,结果发生了这种情况,该怎么办?它可能已经适用于其他人,并且没有必要进行代码更改。所选择的答案还希望人们从特定的文件夹运行脚本来使其工作。这可能是一个长期烦恼的来源,这从来都不是好事。它还建议将特定的 python 文件夹添加到 PATH (可以通过 python 或命令行完成)。同样,如果在几个月内重命名或移动文件夹会发生什么情况?您必须再次搜索这个页面,并最终发现需要设置路径(几个月前您就这么做了) ,并且只需要更新一个路径(当然您可以使用 sys.path 并通过编程方式设置它,但这仍然可能是片状的)。很多烦恼的来源。

如果你确定你要导入的所有模块、文件都在同一个文件夹中,并且只需要给出名称而不是引用路径就可以直接选择它们,那么你的编辑器或终端应该已经打开了所有文件/模块所在的主文件夹。

或者,尝试从终端运行,首先确保您去正确的目录。

Cd path to the root folder where all the modules are

Python script.py

或者,如果从编辑器(即 VsCode)运行[ F5] ,那么打开那里的完整文件夹,而不是单个文件。

我也有过类似的问题。我无法导入模块,即使它们都在同一个目录中(import Error)。我尝试了以上的解决方案,但没有一个对我有效。我必须自己(手动)设置路径。而且,代码是在我的大学服务器上运行的,也许这就是为什么我必须手动设置路径。

import sys
sys.path.append(r'path_to_directory_where_all_modules_are')

我推荐阅读 模块搜索路径

在花费数小时让进口产品像这样工作之后:

from business import Business
from .business import Business
import .Business
import business.Business

我终于摆脱了我的嵌入式 python 安装,并从头开始安装 python。所有用户的 exe 文件,如

c:\Program Files\Python310

然后我确保我的 PATH 变量在新的安装中是最新的(所以我们想要看到或者创建的是像 c:\Program Files\Python310c:\Program Files\Python310\Scripts%USERPROFILE%\AppData\Roaming\Python\Python310\Scripts这样的条目) ,然后用管理员权限启动一个 cmd,下载 Get-pip.py文件并在提升的 cmd 中运行它,如 python get-pip.py,最后一切都按照预期运行... 我不知道为什么或者我做错了什么,但是 python 似乎真的需要深入集成到 windows 中,否则它就不能简单地工作。这种情况并不经常发生,但是在这种情况下,它在 linux 中工作得更好;)

还要重新检查文件和模块的拼写是否有拼写错误。

比如说

import passwords

当文件名保存为密码时,缺少一个 s。

这可能听起来很明显,但是当上面所有的建议都不起作用的时候,有时候也可以像这样简单:)

项目路径更改时会发生此类问题。您需要使用:

Cd 路径到 files _ path

很简单

同样的错误,但我没有找到我的案子的答案,也许有人需要我的解决方案。

似乎在 PyCharm 中我已经创建了 .py文件,但是不知怎么的,在我的项目文件的 windows 目录中是空白的,没有 .py。所以我在 derictory 中重命名了扩展名,并且成功了。

更改扩展之前的图片