如何相对导入我使用python创建的包并更好地构建它?

问题描述 投票:0回答:1

嗨,我正在创建一个包/模块(hysysview),我创建了一些测试,以便我可以测试这些包,因此我需要导入该模块,但是,当我导入 HysysCOM.py 时,我收到此错误测试Hysys.py

在testHysys中导入

import sys
import os
from hysysview.HysysCOM import HysysReader
from enum import Enum

错误:

 line 3, in <module>
    from ..hysysview.HysysCOM import HysysReader
ImportError: attempted relative import with no known parent package

文件夹树

 |-hysysview
 | |-HysysCOM.py
 | |-HysysOperations.py
 | |-HysysOperations_backup.py
 | |-HysysVariables.py
 | |-missingOperation.txt
 | |-__init__.py
 | |-__pycache__
 |-requirements.txt
 |-setup.py
 |-test
 | |-sampleApp
 | |-stored
 | |-test7.bat
 | |-test7.txt
 | |-test8.bat
 | |-test9.bat
 | |-testHysys.py
 | |-__init__.py

为了运行测试,我调用 test16。在终端中:

test16.bat:

python testHysys.py 16 > test16.txt

WinmergeU test16.txt ./stored/test16_stored.txt

timeout /t 100

testHysys.py:

.
.
.
if __name__ == "__main__":
    
    param = sys.argv[1]
    
    if int(param) == TestIdEnum.TEST_SETTING_VALUES.value: #12
        testSettingValues()
    if int(param) == TestIdEnum.TEST_OPERATIONS_NAMES_COLLECTOR.value: #14
        testgetAllOpetationsNames()
    if int(param) == TestIdEnum.TEST_GET_ANY_PROPERTY.value: #15
        testgetOperationPropertiesValues()
    if int(param) == TestIdEnum.TEST_GENERATE_JSON.value: #16
        testGenerateJson()

尝试使用 setup.py 文件解决此问题,但我不太熟悉它!

如果有人可以给我一些关于如何解决这个问题的建议,并更好地构建我的包,我将受到欢迎

提前谢谢你

python import package structure init
1个回答
0
投票

将其包含在您的 init.py 文件中

from .package import *
© www.soinside.com 2019 - 2024. All rights reserved.