簡體   English   中英

使用多處理時出現 ModuleNotFoundError

[英]ModuleNotFoundError when using multiprocessing

多處理生成中丟失的模塊路徑(ModuleNotFoundError)

所謂的在導入模塊上面插入sys-path的解決方案對我來說是行不通的。

這是我的 main.py

import multiprocessing
from testing import customfunction

customfunction(1,2,3)
if __name__ == "__main__":
    process = multiprocessing.Process(target=customfunction)
    process.start()
    process.join()
    print("DONE")

main.py 可以正常工作到 process.start()

這意味着自定義功能已正確導入

這是我的testing.py

import random

def customfunction(size, test, hello):
    random.seed(size)
    print(random.random())
    return random.random()

main.py 和 testing.py 都在同一個文件夾中。 帶有init .py 文件的單獨文件夾也無法正常工作。

我收到此錯誤:

   from testing import customfunction
ModuleNotFoundError: No module named 'testing'

我無法理解為什么創建的進程不保留系統路徑以導入文件。 如果我將多處理創建放在 customfunction 中,它也不起作用,也會發生同樣的錯誤。

我在頂部分享的鏈接對我也不起作用。

感謝您抽出時間閱讀。 如果您認為這是另一個問題的重復,請鏈接並解釋,我是 Python 新手。

編輯:

我使用 Windows 10 作為我的操作系統

我已經使用 Anaconda Navigator、Python 3.7.7 安裝了 Spyder 4.1.4。 我使用可執行包安裝。

我也在 VS Code 上測試了這段代碼。

我通過提到的兩個 IDE 運行它(EG VS Code Powershell 控制台和 Spyder 的 Python 控制台通過單擊運行)

我目前普遍認為這是我的計算機特有的問題,我想知道它是否可以在其他 Windows 系統中復制,以及第一行中鏈接的“解決方案”是否有效。 這樣我就可以查明我的錯誤

如果您調用multiprocessing.Process(target=customfunction, args=(1,2,3))這應該有效。 我想不出這在 Linux 上不起作用的原因。

您能否更新您的問題並提供以下信息?

  • 你使用的是什么操作系統?
  • 您正在運行什么版本的 Python,它是如何安裝的?
  • 您如何運行main.py (例如,從命令行、IDE 等)?
  • 關於您的系統配置的任何其他詳細信息可能有助於其他人回答您的問題?

沒有多處理打印輸出 (Spyder)

這里提到的解決方案似乎解決了我的問題,我從沒想過 VS Code 或 Spyder 的控制台會出現多處理問題,但是在外部系統終端中運行代碼是可行的。

感謝 Melih Elibol 幫助我更清楚地思考問題,我是 Python 新手。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM