【发布时间】:2019-07-24 03:37:32
【问题描述】:
我在 cmd 提示符下运行我的脚本时遇到问题,尽管它在 PyCharm 中工作。我有这样的文件夹结构:
MyCode # PyCharm project folder
/UsefulFunctions
/Messaging
/Texter.py
/DiscordBot
/DiscordBot.py
在 DiscordBot.py 中我有一个导入
from UsefulFunctions.Messaging import Texter
当我从 PyCharm 运行它时没有问题。但是,当我尝试从位于 DiscordBot 级别的命令提示符处运行时,会出现以下错误:
ImportError: 没有名为“UsefulFunctions”的模块
我很自然地认为这意味着UsefulFunctions 文件夹不在我的路径上。因此,我进入了我的环境变量并将其添加到我的PATH 变量(以及MyCode 文件夹中)。它仍然遇到这个错误。我在这里浏览了一些关于进口的帖子(主要是Importing files from different folder),他们建议这样做:
import sys
sys.path.insert(0, '/path/to/application/app/folder')
import file
或者将__init__.py 文件添加到每个文件夹中,以使它们注册为包。我继续将__init__ 文件添加到我尝试从中导入的每个文件夹和子文件夹中,但仍然无法从命令提示符运行...我省略了sys.path.insert() 解决方案,因为在已经明确之后我看不到这样做的任何好处将其添加到我的 PATH 变量中。另一种解决方案是添加“。”在导入之前,因为据说它只是在搜索 python 的 PATH。我尝试这样做:
from .UsefulFunctions.Messaging import Texter
ImportError: 尝试在没有已知父包的情况下进行相对导入
这个错误现在也显示在 PyCharm...有人可以解释一下运行程序的 PyCharm 和我的提示之间的区别吗?为什么尽管有__init__.py 文件和已将MyCode 和UsefulFunctions 添加到Windows 上的PATH 变量中,这不起作用?
【问题讨论】:
-
当您尝试
import UsefulFunctions.Messaging.Texter as Texter时会发生什么? -
@LukeNing 同样是
ImportError不幸的是:(
标签: python python-3.x import pycharm directory