簡體   English   中英

如何在Python項目中正確組織文件

[英]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文件夾,其子文件夾包括testslexicon 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執行操作時,以下條件之一必須正確才能使其正常工作:

  1. 一個文件夾命名lexicon存在於文件夾ex48 ex48lexicon有一個__init__.py

  2. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM