簡體   English   中英

Python:如何導入自定義模塊

[英]Python: how to import custom module

我只是從Python開始,並且對C#\\ Java有更多的經驗。 那么,讓我頭疼的是如何將Python模塊導入另一個自定義模塊? 我已經嘗試了幾件事:

所以:Python找不到我的模塊

SO:無法導入我自己的模塊

SO:導入錯誤:導入我自己的模塊時,沒有模塊命名

以及其他幾個,但通常建議我使用相對進口(在進口聲明前使用適當數量的. )。 對我來說,這似乎很脆弱,因為據我所知,導入是相對的,並且可以根據執行file.py位置file.py解決。

這是我在PyCharm中的項目結構:

Project
├───lib
│    ├───__init__.py
│    ├───pages
│    │   ├───__init__.py
│    │   ├───pageA.py
│    │   └───pageB.py
│    └───actions
│        ├───__init__.py
│        ├───actionA.py
│        └───actionB.py
├───tests
│    ├───__init__.py
│    ├───base_test.py
│    └───search_test.py
└───main.py

在我的search_test.py我確實from lib.actions.actionA import ActionA導入模塊,在actionA.pyfrom lib.pages.pageA import PageA導入模塊。 這是我的main.py

import unittest
from tests.search_test import SearchTest

def create_test_suite():
    test_suite = unittest.TestSuite()
    test_suite.addTest(SearchTest())
    return test_suite


if __name__ == 'main':
    suite = create_test_suite()
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(suite)

當我在PyCharm中運行此程序時,它可以完美運行。 但是現在我需要從控制台運行它:

D:\Projects\Python Projects> python -m unittest project_name.main

而且我正面臨ImportError: no module named 'lib' 有了這個:

D:\Projects\Python Projects\project_name> python main.py

什么都沒發生。

我能做什么? 我應該堅持相對模式還是要導入某種類似Java的包?

當您遇到ImportError這意味着Python找不到您的模塊。 那么,它在哪里尋找模塊?

您的PyCharm工作目錄可能適合您的項目。 但是,當您從命令行執行它時,Python會在當前目錄和PYTHONPATH env變量中查找模塊。 此env變量被翻譯成列表,您可以使用

import os
print os.sys.path

確保您的項目在該路徑中,如果沒有,則將其目錄添加到PYTHONPATH env變量中。 您可以在指導中查看此答案

另外,您可以通過命令行更新env變量, 如此處所述

我認為應該改為project_name文件夾並在其中運行python -m unittest main ,而不是python -m unittest project_name.main

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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