0

よくわかりません。これは単純なエラーになると思いますが、何が間違っているのかわかりません。私はPython2.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 に答える