[英]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.