相关疑难解决方法(0)

如何从python3中的同级目录导入?

我有以下文件结构:

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)

siblings python-import importerror python-3.x

8
推荐指数
1
解决办法
2391
查看次数

如何在 VS Code 中正确导入 Python 模块?

我最近开始用 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)

这是一张图片:

https://i.stack.imgur.com/5EGbk.jpg

pylint python-3.x visual-studio-code

8
推荐指数
1
解决办法
3万
查看次数

Python 中“尝试相对导入超出顶级包”错误意味着什么?

我正在使用 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\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的目标:使用以下命令将变量foo从顶层_init_.py导入到item_service.py

\n\n
from .. import foo\n
Run Code Online (Sandbox Code Playgroud)\n\n

Pylint 在尝试此操作时给出错误。

\n\n

但是,相同的导入语句在home.py中有效,如果我将空的_init_.py文件添加到 services 文件夹中,则导入有效。

\n\n

所以我的问题是,为什么?python 是否要求您的模块位于子包中才能相对导入父包的内容?

\n

python python-3.x

7
推荐指数
1
解决办法
9027
查看次数

从不同目录导入二进制包

我有以下目录结构:

root
  /src
    file1.py
    file2.py
  /libs
    __init__.py
    package.so
Run Code Online (Sandbox Code Playgroud)

我希望导入package.sofile1.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文件 - 我无法访问它的源代码.

谢谢,亚当

python python-2.7

6
推荐指数
1
解决办法
206
查看次数