我是靠谱客的博主 舒服樱桃,最近开发中收集的这篇文章主要介绍python中模块没有命名_Python“ImportError:没有命名模块”问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我在Windows XP SP3上运行Python 2.6.1。我的IDE是PyCharm 1.0-Beta 2构建PY-96.1055。

我将.py文件存储在一个名为“src”的目录中;它有一个除了顶部的“__author__”属性之外为空的__init__.py文件。

其中一个称为Matrix.py:#!/usr/bin/env python

"""

"Core Python Programming" chapter 6.

A simple Matrix class that allows addition and multiplication

"""

__author__ = 'Michael'

__credits__ = []

__version__ = "1.0"

__maintainer__ = "Michael"

__status__ = "Development"

class Matrix(object):

"""

exercise 6.16: MxN matrix addition and multiplication

"""

def __init__(self, rows, cols, values = []):

self.rows = rows

self.cols = cols

self.matrix = values

def show(self):

""" display matrix"""

print '['

for i in range(0, self.rows):

print '(',

for j in range(0, self.cols-1):

print self.matrix[i][j], ',',

print self.matrix[i][self.cols-1], ')'

print ']'

def get(self, row, col):

return self.matrix[row][col]

def set(self, row, col, value):

self.matrix[row][col] = value

def rows(self):

return self.rows

def cols(self):

return self.cols

def add(self, other):

result = []

for i in range(0, self.rows):

row = []

for j in range(0, self.cols):

row.append(self.matrix[i][j] + other.get(i, j))

result.append(row)

return Matrix(self.rows, self.cols, result)

def mul(self, other):

result = []

for i in range(0, self.rows):

row = []

for j in range(0, other.cols):

sum = 0

for k in range(0, self.cols):

sum += self.matrix[i][k]*other.get(k,j)

row.append(sum)

result.append(row)

return Matrix(self.rows, other.cols, result)

def __cmp__(self, other):

"""

deep equals between two matricies

first check rows, then cols, then values

"""

if self.rows != other.rows:

return self.rows.cmp(other.rows)

if self.cols != other.cols:

return self.cols.cmp(other.cols)

for i in range(0, self.rows):

for j in range(0, self.cols):

if self.matrix[i][j] != other.get(i,j):

return self.matrix[i][j] == (other.get(i,j))

return True # if you get here, it means size and values are equal

if __name__ == '__main__':

a = Matrix(3, 3, [[1, 2, 3], [4, 5, 6], [7, 8, 9]])

b = Matrix(3, 3, [[6, 5, 4], [1, 1, 1], [2, 1, 0]])

c = Matrix(3, 3, [[2, 0, 0], [0, 2, 0], [0, 0, 2]])

a.show()

b.show()

c.show()

a.add(b).show()

a.mul(c).show()

我已经创建了一个名为“test”的新目录,其中还有一个__init__.py文件,除了顶部的“__author__”属性外,该文件为空。我创建了MatrixTest.py来对我的矩阵类进行单位化:#!/usr/bin/env python

"""

Unit test case for Matrix class

See http://jaynes.colorado.edu/PythonGuidelines.html#module_formatting for Python coding guidelines

"""

import unittest #use my unittestfp instead for floating point

from src import Matrix # Matrix class to be tested

__author__ = 'Michael'

__credits__ = []

__license__ = "GPL"

__version__ = "1.0"

__maintainer__ = "Michael"

__status__ = "Development"

class MatrixTest(unittest.TestCase):

"""Unit tests for Matrix class"""

def setUp(self):

self.a = Matrix.Matrix(3, 3, [[1, 2, 3], [4, 5, 6], [7, 8, 9]])

self.b = Matrix.Matrix(3, 3, [[6, 5, 4], [1, 1, 1], [2, 1, 0]])

self.c = Matrix.Matrix(3, 3, [[2, 0, 0], [0, 2, 0], [0, 0, 2]])

def testAdd(self):

expected = Matrix.Matrix(3, 3, [[7, 7, 7], [5, 6, 7], [9, 9, 9]]) # need to learn how to write equals for Matrix

self.a.add(self.b)

assert self.a == expected

if __name__ == '__main__': #run tests if called from command-line

suite = unittest.TestLoader().loadTestsFromTestCase(TestSequenceFunctions)

unittest.TextTestRunner(verbosity=2).run(suite)

然而,当我试图运行MatrixTest时,我得到了一个错误:C:ToolsPython-2.6.1python.exe "C:/Documents and Settings/Michael/My Documents/Projects/Python/learning/core/test/MatrixTest.py"

Traceback (most recent call last):

File "C:/Documents and Settings/Michael/My Documents/Projects/Python/learning/core/test/MatrixTest.py", line 8, in

from src import Matrix # Matrix class to be tested

ImportError: No module named src

Process finished with exit code 1

我读到的所有内容都告诉我,在我的所有目录中使用init.py应该能解决这个问题。

如果有人能指出我错过了什么,我将不胜感激。

我还想知道开发和维护源代码和单元测试类的最佳方法。我在考虑这一点,就像我编写Java:/src和/test目录时通常做的那样,下面有相同的包结构。这是“Python式”思维,还是我应该考虑另一个组织方案?

更新:

感谢那些回答的人,以下是对我有效的解决方案:将导入更改为from src import Matrix # Matrix class to be tested

将sys.path作为环境变量添加到unittest配置中,并用分号分隔./src和./test目录。

更改MatrixTest.py中的声明,如图所示。

最后

以上就是舒服樱桃为你收集整理的python中模块没有命名_Python“ImportError:没有命名模块”问题的全部内容,希望文章能够帮你解决python中模块没有命名_Python“ImportError:没有命名模块”问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部