繁体   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