[英]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”而不告诉它在根目录中查找。 它似乎能够找到其他文件夹及其模块和功能,但是找不到像这样的简单测试功能。 有任何想法为什么我可能会收到此错误?
您将需要一个主脚本,该脚本与simulations
和src
放在同一目录中。 从那里,您可以执行所有其他脚本。 或者只是将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.