繁体   English   中英

如何使用Python 3从不同目录导入模块?

[英]How to import a module from different directory with Python 3?

我试图导入模块进行测试但收到此错误:

回溯(最近一次调用最后一次):文件“BaseTest.py”,第8行,来自.main.pageobjects.FBPage import * ModuleNotFoundError:没有名为' main .main'的模块; ' main '不是包

项目树看起来像这样:

/- ProjectDir
/- .src
/- .src.main
/- .src.main.core
/- .src.main.core.BaseCode <- base code to be extended as parent
/- .src.main.core.pageobjects
/- .src.main.core.pageobjects.Module <- a module that inherit from BaseCode 
/- .src.tests
/- .src.tests.BaseTest <- main testing module
/- .src.tests.results

我基本上在我的BaseTest模块中做了这个:

from .main.pageobjects.Module import *

我在这做错了什么? :)

您必须在Module下导入特定的类(或类)。 请参阅下面的代码片段。我已经解释了代码下面的逻辑。

from src.main.core.pageobjects.Module.module1 import Module1
from src.main.core.pageobjects.Module.module2 import Module2

在模块内部,我创建了两个python文件:模块1和模块2; 在module1中,我创建了一个类 - Module1; 在module2中,我创建了一个类 - 模块2; 然后我使用下面的代码片段导入包中的两个类

src.tests.BaseTest

单击项目结构屏幕截图的链接。 如何使用Python 3从不同目录导入模块? 请参阅BaseTest模块下的module1,module2和logintest的python代码。

module1.py

class Module1(object):def init (self):print('这是一个模块1的例子')

def print_info(self):
    print("this is module 1 print statement")

module2.py

class Module2(object):def init (self):print('这是一个模块2的例子')

def print_info(self):
    print("this is module 2 print statement")

src.tests.BaseTest模块下的logintest.py

    from src.main.core.pageobjects.Module.module1 import Module1
from src.main.core.pageobjects.Module.module2 import Module2

m1=Module1()
m2=Module2()
m1.print_info()
m2.print_info()

运行logintest.py并查看结果。 结果来自src.main.core.pageobjects.Module包中的module1和module2。

C:\Python36\python.exe C:/Users/SeleniumMaster/PycharmProjects/ProjectDir/src/tests/BaseTest/logintest.py
This is a module 1 example
This is a module 2 example
this is module 1 print statement
this is module 2 print statement

Process finished with exit code 0

您必须在/ - .src.main.core.pageobjects中创建名为: __init__.py init__.py的文件。 然后在BaseTest.py中添加:

import sys
import os
os.chdir('../main/core/pageobjects')
current_dir = os.getcwd()
sys.path.append(current_dir)
from Module import *
do_something

上面的代码将此路径(/ - .src.main.core.pageobjects)添加到PYTHONPATH环境变量中。 Python使用PYTHONPATH变量来搜索导入的模块,因此一旦添加完整路径,就可以在任何地方访问Module

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM