首页 > 解决方案 > distutils.spawn 不可用,除非导入

问题描述

我已经distutils安装并且它在某些情况下可以工作。但是,当尝试使用子模块时,除非我明确导入它,否则它不会导入。

$ python
Python 3.8.5 (default, Jul 21 2020, 10:42:08) 
[Clang 11.0.0 (clang-1100.0.33.17)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import distutils
>>> distutils.spawn
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'distutils' has no attribute 'spawn'
>>> from distutils import spawn
>>> distutils.spawn
<module 'distutils.spawn' from '/usr/local/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/distutils/spawn.py'>

我在 Mac 上尝试过在 venv 内部和外部。我有一个调用distutils.spawn.find_executable('python3')但不工作的依赖项。

标签: pythondistutils

解决方案


这是完全正常的。这就是 Python 导入的工作原理。除非distutils/__init__.py导入.spawn自己(它不这样做),否则您必须自己导入它才能使其可用。仅导入distutils不足以访问子模块。

反例:import os使os.path自动可用,但那是因为os.py它对您可用。


推荐阅读