Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x &引用;未找到包初始化文件(或不是常规文件)";-为命名空间包生成sdist时出错_Python 3.x_Azure Devops_Setuptools_Python Packaging_Namespace Package - Fatal编程技术网

Python 3.x &引用;未找到包初始化文件(或不是常规文件)";-为命名空间包生成sdist时出错

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() 当我尝试使用以下命令

我有一个文件夹结构为的命名空间包: 公司名称\部门名称\子部门名称\ PkgName

Python 3.3以后的版本支持命名空间包,因此我没有将
\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.*]])
,结果会怎样。警告能消失吗?