0

我很困惑。我认为这将是一个简单的错误,但我找不到我做错了什么。我正在运行 python 2.4.4。我已经编写了我的第一个由多个文件组成的 python 脚本。我已经阅读了当前工作目录中的 python 外观,以及用户添加模块的所有常用路径。我通过查看 sys.path 确认了这一点:

$ python
Python 2.4.4 (#1, Jan  8 2013, 09:29:21) 
[GCC 4.7.2 20120921 (Red Hat 4.7.2-2)] on linux3
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.path)
['', '/usr/local/lib/python24.zip', '/usr/local/lib/python2.4',     '/usr/local/lib/python2.4/plat-linux3', '/usr/local/lib/python2.4/lib-tk',     '/usr/local/lib/python2.4/lib-dynload', '/usr/local/lib/python2.4/site-packages']
>>> 

第一个条目 '' 表示查看当前工作目录,但它似乎没有这样做。这是我的多文件 python 程序的内容。请注意,所有内容都在同一目录中:

$ ls
cherwellTicket.py  dsutils.py  emailMessage.py
$

这是 dsutils.py 的内容。该模块包含我想在其他类中使用的各种静态方法:

#!/usr/bin/python

import getpass
import socket

class DSUtils:
    # (I didn't paste the rest)

这是 cherwellTicket.py 的内容。请注意,这是在同一目录中:

#!/usr/bin/python

import DSUtils 

class CherwellTicket:

    def __init():
        pass

然而,当 python 尝试执行 cherwellTicket.py 时,会发生以下情况:

$ python cherwellTicket.py 
Traceback (most recent call last):
  File "cherwellTicket.py", line 3, in ?
    import DSUtils 
ImportError: No module named DSUtils
$ 

这两个文件都在同一个目录中,那么为什么cherwellTicket脚本现在可以导入 dsutils 类呢?

4

2 回答 2

4

DSUtils不同于dsutils. 我想你可能想要:

from dsutils import DSUtils

模块文件的名称(无.py扩展名)。在导入模块之前,Python 不会查看模块中的类。

或者,

 import dsutils
 class_you_want = dsutils.DSUtils
于 2013-02-04T18:54:08.970 回答
0

模块以文件名命名,而不是模块中的类尝试:

from dsutils import DSUtils
于 2013-02-04T18:55:25.323 回答