- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在尝试理解 Python 3 导入时遇到了很大的麻烦(我使用的是 Python 3.5)。这似乎是一个值(value)百万美元的问题,而且我知道它已在各处得到解答。但是,我并没有真正理解应该如何完成事情;网上的答案千差万别。如果这是一个几乎重复的答案,请提前道歉。我非常感谢对优秀阅读 Material 的引用。
所以我有以下虚拟项目:
/my_project/main.py
/my_project/lib/__init__.py
/my project/lib/my_lib.py
如果可能的话,我想:
python3 main.py
运行,并将 my_project
作为当前工作目录。PYTHONPATH
。main.py
包含:
from .lib.my_lib import foo
if __name__ == '__main__':
foo()
foo
相应地定义在 lib/my_lib.py
通过该配置,我得到:
SystemError: 父模块 '' 未加载,无法执行相对导入
我可以通过导入来绕过这个错误:
from lib.my_lib import foo
但是 1) 这不是 Python3 绝对导入,对吧? 2) Pylint 提示:Unable to import 'lib.my_lib' (import-error)
接下来我尝试添加一个 my_project/__init__.py
,然后像这样导入:
from my_project.lib.my_lib import foo
在这种情况下,pylint 很高兴,但我无法运行:python3 main.py
:ImportError: 没有名为“my_project”的模块
然后我可以运行它的唯一方法是从父目录作为一个模块:python3 -m my_project.main
。
所以我的问题是:是否有可能以正确的方式进行导入,同时仍然能够将其作为 python3 main.py
执行?
非常感谢!
最佳答案
我会做类似的事情:
/path/README
/path/requirements.txt
/path/cleverappname/__main__.py
/path/cleverappname/__init__.py
/path/cleverappname/foo.py
/path/cleverappname/bar.py
假设您在 __init__.py
中有类似 class CleverName(object)
的东西,在 中有类似
(bar 也一样,你明白了)。class Foo(object)
的东西foo.py
在 __main__
中:
from cleverappname import CleverName
from cleverappname.foo import Foo
from cleverappname.bar import Bar
但是,它需要您将它用作 python 而不是脚本(这是正确的,因为它就是这样):python3 -m clevername
Pylint 似乎对此很高兴。
关于Python3 - 如何正确地进行绝对导入并让 Pylint 开心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47939524/
我在尝试理解 Python 3 导入时遇到了很大的麻烦(我使用的是 Python 3.5)。这似乎是一个值(value)百万美元的问题,而且我知道它已在各处得到解答。但是,我并没有真正理解应该如何完成
这个问题在这里已经有了答案: What is the conversion specifier for printf that formats a long? (7 个答案) warning: fo
我是 C 的新手,正在尝试学习 char 数组的动态内存分配,但不确定为什么我不能让 valgrind 对 0 错误感到满意,同时避免段错误。我的例子是基于这个例子: How to dynamical
我写了驼峰字符串的函数(要求是把单词开头和每个连字符后面的字符踢起来,这是针对人名)。 function sadCamelize(input) { return input.toLowerCase
我在 linux 内核 (arch/x86/boot/pmjump.S) 中找到了这段代码 # Set up TR to make Intel VT happy ltr %di
我正在尝试输入 __new__ Python 中元类中的方法,以便它取悦 mypy。代码将是这样的(取自 pep-3115 - “Python 3000 中的元类”并精简了一点): from __fu
我一直在摆弄 mod_rewrite 有一段时间了,但它已经得到了我最好的。希望这里的任何人都能阐明我的问题。 我正在尝试自行托管 wordpress,当我在网站的 .htaccess 文件中将 mo
我在国外图书馆有一本A类。 class A: def __init__(self, a: int): self.a = a 我想用 A 扩展一个 class B,比如: imp
我是一名优秀的程序员,十分优秀!