【发布时间】:2022-02-03 01:30:19
【问题描述】:
我有一个包含不同文件夹的解决方案,我想为它们创建一个通用包以共享可重用代码。 python packages 有很多例子。它们都没有以简单的方式解决单独的文件夹场景。
我的文件夹结构是:
Client/
__init__.py
--logic.py
Common/
__init__.py
-- Constants.py
Server/
__init__.py
-- Test.py
我的Test.py 看起来像这样:
from Common import Constant
print(Constant.TEST_VALUE) #-- From common package
但代码甚至没有通过import 语句。
Exception has occurred: ModuleNotFoundError No module named 'Common'
如果我尝试使用相对路径:from ..Common import Constant
错误:
Exception has occurred: ImportError attempted relative import with no known parent package
我的目的是为Cars 和Server 解决方案重用constant.py 文件。 sys.path 有一些示例,我不确定它是否是一个好习惯。此外,Common 中的代码不会有复杂的代码来继续安装它们。
【问题讨论】:
-
"我想在
Test.py中使用Common模块和Cars模块-那些不是模块;他们是包裹。 “它们都没有以简单的方式解决单独的文件夹场景。”正确的;通常一个项目有一个顶级包。简单的解决方案是只制作一个包含其他三个文件夹的文件夹,然后按照通常的建议进行操作。如果您确实想要相互交互的单独包,那么最简单的方法是安装它们(最好是在虚拟环境中)。 -
"OR
PATH用于指定模块的路径。"我想你的意思是PYTHONPATH。我一般不建议这样做。 -
@Karl 在我的情况下,这就像一个客户端-服务器拱门。一种解决方案是 Cars+Common,另一种是 Server+Common。我来自 .NET 背景,这就是为什么会出现这些错误。
-
啊哈,所以有些用户会特别想要两个而不是全部三个包?然后我想你的解决方案中确实有三个项目(在 VS 中),其中 Cars 和 Server 都依赖于 Common。最好将它们视为单独的包,因此在它们之间使用绝对导入。
标签: python package python-import