![](/img/trans.png)
[英]ModuleNotFoundError error when running a python file from shell script
[英]ModuleNotFoundError error when running script
我檢查了許多以前提出的問題,但我找不到解決問題的方法。
我在根目錄的終端上運行python3 folder1/script1.py命令,但出現錯誤ModuleNotFoundError: No module named 'folder2' 。 我將__ init __.py添加到文件夾中,但仍然找不到解決方案。
我的項目目錄是這樣的:
└── root
├── folder1
│ ├── script1.py
│
└── folder2
├── module1.py
模塊1.py:
def say_hello():
print('hello')
scipt1.py:
from folder2 import module1
module1.say_hello()
一般需要安裝 python 模塊才能找到 python 模塊。 一個附帶規則是 python 將查看腳本的路徑以查看模塊是否存在。 將script1.py
下移一級,確保你有一個__init__.py
並且它會工作。
└── root
├── script1.py
│
└── folder2
├── __init__.py
├── module1.py
您還可以讓script1.py
將其祖父目錄插入sys.path
。 但真正解決問題的最佳方法是通過添加 setup.py 使 package 可安裝。 一個極其原始的版本是
import setuptools
setuptools.setup(
name="Foobar",
packages=setuptools.find_packages(),
scripts=["folder1/script1.py"]
)
你的目錄可以是
└── root
├── setup.py
├── folder1
│ ├── script1.py
│
└── folder2
├── __init__.py
├── module1.py
現在您可以執行python setup.py develop
從開發目錄運行腳本。 或python setup.py install
(通常在您創建的 venv 中)使其成為標准安裝。
雙下划線 init 的正確用法;
__init__
我將 _ init _.py 添加到文件夾中,但仍然找不到解決方案。
你只用一個寫 init 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.