![](/img/trans.png)
[英]How to properly organize a Python class definition with respect to helper files for that class?
[英]How to organize files properly in Python projects
我在使用Python的項目時遇到了一些困難。 這是參考《艱苦學習Python》的 Qn 48 。
測試人員lexicon_tests.py
這一行lexicon_tests.py
了一個問題:
from ex48 import lexicon
我看到的錯誤是:
ImportError: no module named ex48
我想知道是否是因為我沒有在projects文件夾中正確地組織我的文件:我有一個名為ex48
文件夾,其子文件夾包括tests
和lexicon
。 在lexicon
,我有lexicon.py
文件。 在tests
,我有lexicon_tests.py
文件
上述組織有錯誤嗎?
編輯:在這里發布代碼-
在/ ex48中,我有setup.py
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
config = {
'description': 'My Project',
'author': 'MyName',
'url': 'URL to get it at.',
'download_url': 'Where to download it.',
'author_email': 'My email.',
'version': '0.1',
'install_requires': ['nose'],
'packages': ['ex48'],
'scripts': [],
'name': 'projectname'
}
setup(**config)
在/ ex48 / lexicon中,我有lexicon.py
class lexicon:
@staticmethod
def scan(string):
direction = ['north', 'south', 'east', 'west', 'down', 'up', 'left', 'right', 'back']
verbs = ['go','stop','kill','eat']
stop = ['the','in', 'of', 'from', 'at','it']
nouns = ['door', 'bear', 'princess', 'cabinet']
words = string.split()
result = []
for word in words:
if word in direction:
result.append(('direction',word))
等等 。 。 。 最后return result
。 所有環境變量均已正確添加。 我看到的錯誤是ImportError
,名稱為lexicon。
檢查ex48文件夾中是否存在文件__init__.py
。 創建一個包是必需的,可以為空。
該錯誤表明ex48不在您的python導入搜索路徑中。 您可以通過以下方法進行檢查:
import sys
sys.path
編輯
這是向Python的導入搜索路徑添加路徑的分步教程: 設置Windows Python Path系統環境變量 。 我猜想如果它們仍然沒有出現在sys.path
並且您沒有正確添加它們,並且直到它們執行該導入操作就沒有理由。
編輯
現在,在出現新錯誤之后。 當您from ex48 import lexicon
執行操作時,以下條件之一必須正確才能使其正常工作:
一個文件夾命名lexicon
存在於文件夾ex48
, 都 ex48
和lexicon
有一個__init__.py
lexicon.py
直接位於ex48
而__init__.py
也位於ex48
。
編輯
您說從最近的評論中得到的錯誤是由錯誤的標識引起的。 您在上面發布的代碼需要和def scan(string):
下面每一行的額外標識級別def scan(string):
為了這
from ex48 import lexicon
result = lexicon.scan("north south east")
要工作,您應該將lexicon.py
放在文件夾ex48
,並且lexicon.py
應該在模塊級別包含scan
功能,而不是作為類方法。
根據您當前的代碼,其中你有一個類lexicon
模塊lexicon
封裝lexicon
,import語句將不得不像
from ex48.lexicon.lexicon import lexicon
實際上,在ex48項目中,您會看到有一個setup.py文件。 在其中,您將看到以下行:
'packages': ['NAME'],
您需要做的就是將NAME更改為您的文件夾名稱(ex48),如下所示:
'packages': ['ex48'],
確保在ex48文件夾中,您具有lexicon.py,其中定義了掃描功能。 無需上新課。
編輯完成后,鼻子測試應正確運行:
from ex48 import lexicon
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.