Visual Studio 2017上的“没有名为'foo'的模块” Python错误

时间:2018-12-27 20:25:19

标签: python

我正在学习使用Python进行数据可视化的方法,并试图创建一个具有随机散布的简单图形。我目前有两个Python文件,分别是“ random_walk.py”和“ rw_visual.py”。

我收到错误消息,提示“没有名为random_walk的模块”, 以及“无法解决'random_walk'。此模块可能缺少IntelliSense。”

我正在使用Visual Studio 2017,并使用matplotlib。

'random_walk.py'

from random import choice

class RandomWalk():

    def __init__(self, num_points=500):
        """Initialize attributes of a walk."""
        self.num_points = num_points

        # All walks start at (0,0).
        self.x_values = [0]
        self.y_values = [0]

'rw_visual.py'

import matplotlib.pyplot as plt
from random_walk import RandomWalk

# Make a random walk, and plot the points.
rw = RandomWalk()
rw.fill_walk()

plt.scatter(rw.x_values, rw.y_values, s=15)

plt.show()

这些是我文件的保存位置。

C:\ Users \ foo \ Desktop \ python_work \ project_2 \ rw_visual \ rw_visual C:\ Users \ foo \ Desktop \ python_work \ project_2 \ random_walk \ random_walk

我试图将文件合并到一个文件夹下,但是它什么也没做。 我还在'project_2'文件夹下创建了一个__init__.py,以某种方式,错误消失了(但是没有显示任何图形),但是现在它没有任何改变。.

1 个答案:

答案 0 :(得分:0)

好的,修复它。首先,让我们考虑一下您的文件夹结构:

project_2/
|-- rw_visual/
|   |-- rw_visual.py
|
|-- random_walk/
|   |-- __init__.py
|   |-- random_walk.py

剪切文件夹random_walk/,保留其所有文件。现在,在您的Python安装目录中找到文件夹site-packages(对我来说,它看起来像~\Python37\Lib\site-packages)。在这里,您将找到pip安装的所有模块。只需将文件夹random_walk与其他模块一起粘贴到此处即可。

接下来,让您的程序了解该怎么做。在您的情况下,类似这样的方法应该起作用:

import matplotlib.pyplot as plt
from random_walk import random_walk as rw

# Make a random walk, and plot the points.
r_walk = rw.RandomWalk()
r_walk.fill_walk()

plt.scatter(r_walk.x_values, r_walk.y_values, s=15)

plt.show()

在此import中,您要告诉Python查找模块random_walk,这是您文件夹的名称。在其中,Python将找到__init__.py文件,并将其确认为模块。现在,从该文件夹/模块中,您将选择要使用的Python文件。因此,from random_walk import random_walk,其中第一个random_walk指向文件夹,第二个random_walk指向程序。现在,我只是使用as rw来简化代码编写。

现在,您的模块已导入,您可以使用rw.your_random_definition调用其上定义的所有内容。

请记住:除了结构正确之外,我无法确定您的代码是否正确。我向您保证这将正确导入您的模块,但是由于我无法测试代码,因此无法确保其正常工作。如果您遇到其他任何问题,则有99,99%的机会来自编码错误。如果您需要其他帮助,建议您提供minimal, verifiable code snippet