python - 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')
但不工作的依赖项。
解决方案
这是完全正常的。这就是 Python 导入的工作原理。除非distutils/__init__.py
导入.spawn
自己(它不这样做),否则您必须自己导入它才能使其可用。仅导入distutils
不足以访问子模块。
反例:import os
使os.path
自动可用,但那是因为os.py
它对您可用。
推荐阅读
- javascript - 如何在给定键数组的情况下分配对象的嵌套属性
- c# - C# WPF 文本框单击事件
- html - 如何在单个标题下的单行中添加多个图像?
- ocr - OpenALPR 训练表生成中的阿拉伯字母宽度问题
- iis - IIS 根据服务器变量值重写并重定向到同一服务器上的不同站点
- anaconda - 如何暂时逃离 anaconda/conda shell 环境
- ios - 从 AVCaptureDataOutputSynchronizer (Swift) 获取音频数据的问题
- git - Git Hub - 将 repo 克隆到本地机器上,然后移动并重命名本地机器的存储库
- symfony - symfony 的 form_errors 显示列表项而不仅仅是文本
- python - 计算字典中的单词