我很困惑。我認爲這將是一個簡單的錯誤,但我找不到我做錯了什麼。我正在運行Python 2.4.4。我寫了第一個由多個文件組成的第一個Python腳本。我讀過python查看當前工作目錄,以及用戶添加模塊的所有常用路徑。我已經在看sys.path中證實了這一點:在本地目錄中找不到模塊,存在於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']
>>>
中的第一項,「」,表示期待在當前工作目錄,但它似乎並沒有被這樣做。這裏是我的mult文件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類了嗎?
哦。謝謝!它被認爲是錯誤的形式來命名類不同於文件名?這是你可以做的事情之一,但它的粗魯的東西? – mystupidquestion
使用CamelCase作爲類(pep-8)而不是'class_you_want'。此外,OP在Linux上,但在Windows和OS X上仍有PYTHONCASEOK envvar(不應該使用),請參見[導入不區分大小寫的平臺](http://www.python.org/dev/peps/ PEP-0235 /)。 – jfs
@mystupidquestion:使用小寫模塊和[CapWords for classes](http://www.python.org/dev/peps/pep-0008/#class-names)。您可以在模塊中定義多個公共類。沒有必要使用相同的名稱。 – jfs