簡體   English   中英

Python導入模塊錯誤,“導入錯誤:無法導入名稱X”

[英]Python Importing Module Error, “Import Error: cannot import name X”

我有兩個python模塊,一個命名為testingDirectories.py,另一個命名為testFile.py

我的目錄中有兩個文件夾:Simulations和src

“模擬”應該包含正在運行的各個模擬的所有源代碼。

“ src”包含用於運行模擬的主項目的源代碼。

我的testingDirectories.py文件位於“模擬”中,而testFile.py文件位於“ src”中。

testFile.py的內容如下:

def testFunction(m):
    return 'hello, world'

testingDirectories.py的內容如下:

import sys
import os

from src.testFile import testFunction

testFunction('hello')

當我運行簡單的演示時,它給我一個錯誤:

from src.testFile import testFunction
ImportError: cannot import name testFunction

本演示的重點是弄清楚程序是否可以找到目錄“ src”而不告訴它在根目錄中查找。 它似乎能夠找到其他文件夾及其模塊和功能,但是找不到像這樣的簡單測試功能。 有任何想法為什么我可能會收到此錯誤?

您將需要一個主腳本,該腳本與simulationssrc放在同一目錄中。 從那里,您可以執行所有其他腳本。 或者只是將src包括到simulations ,並添加一些__init__文件。

另外,您可以建立以下結構:

|mypackage
    |__init__.py
    |simulations
        |__init__.py
        |testingDirectories.py
    |src
        |__init__.py
        |testFile.py

__init__.py可以為空。 第二步,將其包含在PYTHONPATH

$ set PYTHONPATH=%PYTHONPATH%;C:\my_python\mypackage

然后,在testingDirectories.py

from mypackage.src.testFile import testFunction
testFunction('hello')

其他方式? 使用-m開關執行程序。

$ cd C:\my_python\mypackage\simulations\
$ python -m simulations.testingDirectories

您可以from src.testFile ...導入第二個模塊from src.testFile ...

希望這可以幫助!

我最終做了什么(因為顯然相對路徑是Python中一個相當普遍的問題):

我創建了一個名為main.py的文件,該文件

os.walk('.')

查找所有文件和文件夾,並將模塊名稱存儲在字典中以便於查看。

然后,我為main.py提供了一些功能,使用戶可以通過main.py從命令行簡單地運行我的腳本,而不必查找每個單獨的模塊並從那里運行它。

這是我使用用戶定義的字符串來運行模塊和功能的代碼:

def runModuleFunction(moduleName, funcName, params):
    m = __import__(moduleName)
    func = getattr(m, funcName)
    return func(params)

到目前為止,此解決方案效果理想。

暫無
暫無

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

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