Python的新手。我想安装python的多处理模块。我使用的是python 3.6和pip 9.1版。
我收到一个错误,让我相信由于没有与python 3兼容的多处理模块,可能会发生以下错误。
$ pip3 install multiprocessing
Collecting multiprocessing
Using cached multiprocessing-2.6.2.1.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/private/var/folders/8m/2fkldrg12lg0qzlhpm8yvyq00000gn/T/pip-build-dqdczlx9/multiprocessing/setup.py", line 94
所以,我使用安装模块的pip install multiprocessing安装了模块。我已经在python 3中编写了很多代码,所以我想使用它,我使用pycharm编辑器,我已经配置使用python3。现在,如果我在编辑器中执行代码,则会抛出错误,如
/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 /Users/kkk/Desktop/testing/multiprocessing.py
Traceback (most recent call last):
File "/Users/testing/multiprocessing.py", line 11, in <module>
p = multiprocessing.Process(target=worker)
AttributeError: module 'multiprocessing' has no attribute 'Process'
Process finished with exit code 1
代码
import multiprocessing
def worker():
"""worker function"""
print ('Worker')
return
if __name__ == '__main__':
jobs = []
for i in range(5):
p = multiprocessing.Process(target=worker)
jobs.append(p)
p.start()
我该怎么做才能解决这个问题?
由于
答案 0 :(得分:15)
自Python 2.6起,multiprocessing
是一个内置模块。
它附带Python,不需要特定的安装步骤。
答案 1 :(得分:2)
问题不在于multiprocessing
模块,而在于您实际尝试导入multiprocessing
模块的命名脚本的方式。您将其命名为与模块相同,即multiprocessing.py
,因此import multiprocessing
实际上是导入脚本本身而不是标准库的模块。
这是因为way how Python searches modules在不同的位置和特定的顺序:
- 包含输入脚本的目录(如果未指定文件,则为当前目录)。
- PYTHONPATH(目录名称列表,语法与shell变量PATH相同)。
- 与安装有关的默认设置。
如您所见,Python寻找要导入的模块的第一个位置是包含输入脚本的目录。这就是为什么它会根据您的情况导入脚本本身的原因。而且您的脚本不包含您要使用的Process
类,这就是为什么出现错误AttributeError: module 'multiprocessing' has no attribute 'Process'
的原因。
此问题并非特定于multiprocessing
模块,任何模块都可能发生。因此,最好不要将脚本的名称与要使用(导入)的现有模块的名称相同。。
答案 2 :(得分:0)
将文件名更改为multiprocessing.py以外的任何文件名... 您的代码将尝试自行导入。