【问题标题】:How can I fix module not found in python如何修复python中找不到的模块
【发布时间】:2019-12-13 19:22:33
【问题描述】:

我的 target.py 文件在 Starterpack/ModulesAndPackages/target.py 我的脚本文件在Starterpack/Scripts/Bad.py

我的ModulesAndPackages 文件夹有__init__.py 文件,但是当我在脚本文件中输入from ModulesAndPackages.target import Target 时,我仍然收到此错误No module named ModulesAndPackages

我尝试了sys.path.append()sys.path.insert(),但都没有奏效。在我的编辑器中没有错误,但是当我运行它时,它给出了错误。

脚本文件:

mandp_dir = "./ModulesAndPackages"
scripts_dir = "./Scripts"
main_dir = ".."

os.chdir(Path(main_dir))
from ModulesAndPackages.target import Target

target.py 文件:

import time
import os
import keyboard

class Target():
    def __init__(self, ip, port, packetsize, time=None):
        self.ip = ip
        self.port = port
        self.packetsize = packetsize
        self.time = time

    def attack(self):
        pass

如果我添加了 __init__.py 文件,我希望它可以工作,但它没有。

【问题讨论】:

  • ModulesAndPackages 与您的脚本位于同一目录中?
  • @xbound 我的脚本在 Starter Pack/Scripts 中,target.py 在 Starter Pack/ModulesAndPackages 中
  • 你的ModulesAndPackages 包里面有__init__.py 文件吗?
  • @xbound 是的。
  • 试试sys.path.append("..")而不是os.chdir(Path(main_dir))

标签: python python-3.x


【解决方案1】:

您可能希望将目录添加到 python 搜索的路径中,而不是更改当前目录,例如:

scripts_dir = "./Scripts"
main_dir = ".."

sys.path.append(Path(main_dir))

另外,请查看:python-best-way-to-add-to-sys-path-relative-to-the-current-running-script

【讨论】:

    【解决方案2】:

    您可以尝试为sys.path添加额外的路径:

    import os, sys
    from pathlib import Path
    main_dir = ".."
    
    sys.path.append("..")
    from ModulesAndPackages.target import Target
    

    如果您这样做只是为了进行一些小测试,那么没关系。

    但是:我不鼓励在大多数项目中这样做,因为这通常不是很好的方法。相反,您的脚本应该像这样与 ModulesAndPackages 处于同一级别,以便 from ModulesAndPackages.target import Target 正确导入:

    ├── ModulesAndPackages
    │   ├── __init__.py
    │   └── target.py
    └── script.py
    

    这里script.py 将作为main 的起点。

    【讨论】:

      【解决方案3】:

      __init__.py 文件也添加到您的 StarterPack 文件夹并使用 from StarterPack.ModulesAndPackages.target import yourFunctionName

      【讨论】:

      • Starterpack 是我持有超过 2 个文件夹的主文件夹
      猜你喜欢
      • 2020-12-18
      • 2019-10-19
      • 2022-08-11
      • 2019-08-14
      • 2020-01-15
      • 2019-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多