我有以下文件结构:
bot
??? LICENSE.md
??? README.md
??? bot.py # <-- file that is executed from command line
??? plugins
? ??? __init__.py
? ??? debug.py
? ??? parsemessages.py
??? helpers
? ??? __init__.py
? ??? parse.py
? ??? greetings.py
??? commands
??? __init__.py
??? search.py
Run Code Online (Sandbox Code Playgroud)
bot.py当从命令行执行时,将加载plugins目录中的所有内容。
我想从目录plugins/parsemessages.py导入,所以我这样做:parsehelpers
# parsemessages.py
from ..helpers import parse
parse.execute("string to be parsed")
Run Code Online (Sandbox Code Playgroud)
我python3 bot.py从命令行运行。
我收到以下错误:
File "/home/bot/plugins/parsemessages.py", line 2, in <module>
from ..helpers import parse
ValueError: …Run Code Online (Sandbox Code Playgroud) 我最近开始用 Python 编程,我决定用 Python 编写一些 Delphi 函数。我决定创建一个单独的 Python 模块来保存我的函数。
现在,我尝试导入它,但在 Visual Studio Code 中出现此错误:
unable to import 'functions' pylint(import error) [5, 1]
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
unable to import 'functions' pylint(import error) [5, 1]
Run Code Online (Sandbox Code Playgroud)
这是一张图片:
我正在使用 python 3.7 并遇到相对导入错误“尝试相对导入超出顶级包”,文件夹结构如下:
\n\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 app\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 services\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 item_service.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 views\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 home.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\nRun Code Online (Sandbox Code Playgroud)\n\n我的目标:使用以下命令将变量foo从顶层_init_.py导入到item_service.py
\n\nfrom .. import foo\nRun Code Online (Sandbox Code Playgroud)\n\nPylint 在尝试此操作时给出错误。
\n\n但是,相同的导入语句在home.py中有效,如果我将空的_init_.py文件添加到 services 文件夹中,则导入有效。
\n\n所以我的问题是,为什么?python 是否要求您的模块位于子包中才能相对导入父包的内容?
\n我有以下目录结构:
root
/src
file1.py
file2.py
/libs
__init__.py
package.so
Run Code Online (Sandbox Code Playgroud)
我希望导入package.so内file1.py.
我尝试了以下导入语句无济于事:
from .libs.package import func
from libs.package import func
from .libs import package
from libs import package
Run Code Online (Sandbox Code Playgroud)
我想避免设置PYTHONPATH/ sys.path.
有一个简单的方法吗?我认为问题是由于包是共享对象而不仅仅是Python文件 - 我无法访问它的源代码.
谢谢,亚当