我有一个这样结构的python项目:(这不是一个真正的项目,只用于测试)
ImportTest
ImportPersonsTest\
ImportPerson\
ImportPerson.py
RunImportPersonTest.py
RunImportTests.py
我想让这个测试互相联系。例如: 运行导入测试.py调用中的方法RunImportPersonTest.py文件,和RunImportPersonTest.py文件调用方法导入人员.py你知道吗
RunImportPersonTest:
import os
import sys
sys.path.insert(0, os.getcwd() + "../../../")
from ImportPerson import ImportPerson
运行导入测试
import os
import sys
sys.path.insert(0, os.getcwd() + "../../")
from ImportPersonsTest import RunImportsPersonTest
我跑步就成功了导入人员.py以及RunImportPersonTest.py文件,但当我尝试运行runimportsets时,出现以下错误:
Traceback (most recent call last):
File "xxx\LiClipse Workspace\SystemTest\ImportTest\RunImportTests.py", line 4, in <module>
from ImportPersonsTest import RunImportsPersonTest
File "xxx\LiClipse Workspace\SystemTest\ImportTest\ImportPersonsTest\RunImportsPersonTest.py", line 4, in <module>
from ImportPerson import ImportPerson
ImportError: No module named 'ImportPerson'
有什么建议吗?你知道吗
编辑
新结构
ImportTest
ImportPersonsTest\
ImportPerson\
ImportPerson.py
__init__.py
RunImportPersonTest.py
__init__.py
RunImportTests.py
__init__.py
有两个基本问题:
os.getcwd()
与其他os
函数一样返回路径,末尾没有分隔符。实际上,您插入的xxx\LiClipse Workspace\SystemTest\ImportTest../../../
不是有效路径正如@peter提到的,使用操作系统getcwd()是个坏主意-这取决于您运行脚本时的位置。用途:
sys.path.append(os.path.dirname(__file__))
(insert
仅在特殊情况下推荐)但是
看来这些都没有引起你的问题。它只会在你的
sys.path
中插入不好的东西。您的导入需要正常工作,因为所有的导入都是从self module dir完成的,python首先在其中搜索请求的模块。你知道吗我把你的包裹复制到我的机器上-两个都运行得很好! 我修复了一个拼写错误(RunImportsPersonTest RunImportPersonTest)-可能还有其他拼写问题
我认为你使用操作系统getcwd()有缺陷。你知道吗
如果您运行的是我的目录,那么您将无法修复当前目录中的任何导入操作,因此您需要先修复当前目录中的任何导入操作。然后尝试第二次导入时,添加“../ImportTest/../../..”或“../ImportTest/../..”无助于Python找到它。你知道吗
要解决这个问题,可以将ImportPersonsTest目录添加到您的路径中,或者在导入中使用一个经过适当修改的名称(确保您的init文件已经标记)
看起来您的项目中没有任何
__init__.py
文件。Python需要这些文件才能从文件夹导入模块。好消息是,它们很容易制造:大多数时候,它们不需要任何东西,它们只需要存在。你知道吗见:https://docs.python.org/2/tutorial/modules.html#packages
相关问题 更多 >
编程相关推荐