Python 3.x &引用;未找到包初始化文件(或不是常规文件)";-为命名空间包生成sdist时出错
我有一个文件夹结构为的命名空间包: 公司名称\部门名称\子部门名称\ PkgName Python 3.3以后的版本支持命名空间包,因此我没有将Python 3.x &引用;未找到包初始化文件(或不是常规文件)";-为命名空间包生成sdist时出错,python-3.x,azure-devops,setuptools,python-packaging,namespace-package,Python 3.x,Azure Devops,Setuptools,Python Packaging,Namespace Package,我有一个文件夹结构为的命名空间包: 公司名称\部门名称\子部门名称\ PkgName Python 3.3以后的版本支持命名空间包,因此我没有将\uuuu init\uuuuu.py文件放在以下文件夹中: CompanyName DepartmentName SubDepartmentName 在setup.py中,我放置了以下代码setuptools.find\u namespace\u packages()而不是setuptools.find\u packages() 当我尝试使用以下命令
\uuuu init\uuuuu.py
文件放在以下文件夹中:
CompanyName
DepartmentName
SubDepartmentName
在setup.py中,我放置了以下代码setuptools.find\u namespace\u packages()
而不是setuptools.find\u packages()
当我尝试使用以下命令构建sdist时:
python -m pip install --upgrade pip
python -m pip install --upgrade setuptools wheel
python setup.py sdist
我得到以下错误:
package init file 'CompanyName\__init__.py' not found (or not a regular file)
package init file 'CompanyName\DepartmentName\__init__.py' not found (or not a regular file)
package init file 'CompanyName\DepartmentName\SubDepartmentName\__init__.py' not found (or not a regular file)
我将任务设置作为azure devops管道的命令行任务的一部分,并将“标准错误失败”设置为true。管道由于上述错误而失败。尽管未找到包初始化文件(或不是常规文件)更像是一个警告,而不是本地错误,但如果在使用VST时将标准错误上的失败设置为true,则会导致生成管道失败 本地: 标准错误下
失败的VST
默认为false:
标准错误下失败的VST
为真:
1.为此,您可以选择关闭选项(Fail-on-standard error
),因为即使出现该消息,也可以成功生成python命名空间包。所以在这种情况下,我认为你可以抑制这种信息
2.另外,另一个方向是在生成包时解析消息。由于该消息的原因与setup.py
文件中的定义有关,因此应使用setuptools.find\u namespace\u packages()
类似于建议
由于mynamespace不包含init.py,因此setuptools.find_packages()将找不到子包。您必须使用setuptools.find_namespace_packages(),或者显式列出setup.py中的所有包
此外:不建议删除包中的所有
\uuuu init\uuuuuy.py
文件,请查看AndreasLukas:如果要在导入包或其任何模块或子包时运行特定的初始化脚本,您仍然需要一个init.py文件。在setup.py中,我已经放置了下面的代码setuptools.find_namespace_packages()而不是setuptools.find_packages()。这并不能解决问题。嗨,朋友,如果您使用查找命名空间\u包(include=['DepartmentName.SubDepartmentName.Package.*]])
,结果会怎样。警告能消失吗?