挑战
我正在开发一个 Python 项目,该项目将充当科学仪器上 SCPI 命令行界面的翻译层。
它类似于Python中的多层包中描述的概念,但是我的情况稍微复杂一些,我似乎不知道如何使其工作。
以下是我的项目结构的表示(如果需要,我很乐意更改它):
一些需要记住的事情
__init__.py 文件(基于示例布局)如下所示(注意我只有一个用于测试的模块)
translator_lib\__init__.py
from .instruments import supplier1
__all__ = ['supplier1']
translator_lib\instruments\__init__.py
from .supplier1 import module1
__all__ = ['module1']
我正在努力做什么
编译三个库,分别为 my_translator_lib、supplier1_translator_lib 和 supplier2_translator_lib。
原因
开发团队将导入 my_translator_lib 来执行他们需要的操作,但如果我们想将示例代码发送给供应商1,我们想向他们发送 supplier1_translator_lib 并且他们应该只能导入 supplier1_translator_lib
示例 1:开发者
from translator_lib.instruments import supplier1
from translator_lib.instruments import supplier2
class DoStuff:
__init__(self):
self.sup1_class1 = supplier1.module1.class1.class1()
self.sup2_class1 = supplier2.module1.class1.class1()
示例2:供应商1
from supplier1_translator_lib import module1
from supplier1_translator_lib import module2
class DoStuff:
__init__(self):
self.class1 = module1.class1.class1()
self.class2 = module1.class2.class2()
我尝试了如何创建 Python 库和深入研究:创建并发布您的第一个 Python 库中的多种组合和部分。 我设法创建一个库并安装它,但最终我只能导入 my_translator_lib,其他任何东西都不可见或可用。
在这方面的任何帮助将不胜感激。
您创建了
__init__.py
文件吗?
您需要在模块的每个子文件夹中都有然后。
名为
__init__.py
的文件用于将磁盘上的目录标记为 Python 包目录。尝试遵循以下步骤:
mydir/spam/__init__.py
mydir/spam/module.py
如果这不能解决您的问题,作为最后的资源,您可以尝试
sys.path.append('path_to_other_modules')