- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
很容易复制问题。我当前的设置是:
package/
__init__.py
run.py
在我的 __init.py__
中,我有:
blah = 4
在我的 run.py
中,我有:
from package import blah
if __name__ == '__main__':
print(blah)
我只是使用python run.py
运行它。但我收到 ImportError: Cannot import name 'blah'
.
为什么我无法从包中导入变量?我知道如何解决它,我很想知道错误的原因。
最佳答案
您显然试图将其作为包执行,但您正在运行“run.py”,就好像它是标准 python 脚本一样。从您尝试运行它的方式来看,run.py
没有 module
的概念。您需要在这里重新构建您的设计。包中的 module
run.py
将是一个模块(这些是您的命名约定)。所以 module
是包,run.py
是一个模块。然后,您需要一个 __main__.py
来将其作为包执行,并且您需要更改 run.py:
run.py
:
#!/usr/bin/env python3
from module1 import blah
def run():
print(blah)
__main__.py
:
#!/usr/bin/env python3
from module1 import run
def main():
run.run() # run is the module name, and run is also the function name so we execute with run.run
main()
__init__.py
:
blah = 4
目录结构:
模块1/ - __init__.py
- __main__.py
- run.py
执行(在module1
之外):
[dkennetz@nodem103 fun]$ python3.5 -m module1
4
如果您不想将其设为包,则只需创建一个名为 package
的目录,并在其中创建 run.py
和 变量。 py
.
变量.py:
blah=4
blahblah=8
blahblahblah=12
运行.py:
from variables import blah
print(blah)
打印4
如果您将 run.py 更改为:
from variables import blah, blahblah
print(blah)
print(blahblah)
[dkennetz@nodem103 package]$ python3.5 run.py
4
8
或者您可以通过将 run.py 更改为导入所有变量:
from variables import *
print(blah)
print(blahblah)
print(blahblahblah) # if this was added to variables.py as 12
它返回:
[dkennetz@nodem103 package]$ python3.5 run.py
4
8
12
关于Python,从同一模块导入: ImportError: cannot import name 'blah' , __name__ == '__main__',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56687346/
在尝试执行类似于 ActiveState 配方中标题为 Constants in Python 的操作时通过 Alex Martelli,我遇到了意想不到的副作用(在 Python 2.7 中),将类
我正在尝试编写一个类来捕获任何通用函数调用,然后尝试使用它进行一些操作。 作为示例,我尝试使用 here 中类似问题的答案. 但是,当我尝试通过分配 __name__ 属性来更改方法的名称时,它会抛出
这个问题在这里已经有了答案: Why does cls.__name__ not appear in dir()? (4 个答案) 关闭 5 年前。 Class_object 的名称可以通过.__n
n = 20 print n.__name__ 我收到一个错误,因为 n 没有属性 __name__: AttributeError: 'int' object has no attribute '_
在 Python 中,您可以通过 __file__ 获取正在执行的文件的路径是否有等效的 java? 还有一种方法可以像 __name__ 一样获取你当前所在的包吗? 最后,Java 自省(intro
在 rootes.js 中 .state('main.mydata', { url: '/my-data', templateUrl: '/app/views/pages/my-dat
我尝试在网上寻找答案,但找不到。我对 python 相当陌生,想知道程序中是否可以有多个 main 函数。例如: ask_user = int(input('enter your choice (1
在我的 Python Shell 中,删除 __name__ 使其成为 'builtins'。虽然,检查 globals 确认我没有从某个全局变量中引用 __name__。 Python 3.6.2
__name__ 是做什么的?我只看到它与 __main__ 配对,没有其他。 我知道经典的 if __name__ == __main__: 定义了作为包运行与作为独立运行时的行为。 但是 __na
我正在通过阅读 Dive Into Python 来学习 Python在网上,在第 2 章中,我看到您可以使用 __name__ 属性进行测试,所以我想知道,是否有人知道此属性的其他用途?谢谢 最佳答
我正在尝试在我的应用程序中实现基于角色的权限。我有一个装饰器 role_required,我可以将一组用户角色传递到其中,只有具有该角色的用户才能访问该 View 。我已经为用户正确分配了角色,但是,
我正在使用 if __name__ == "__main__": 运行我定义的函数。 然而,作为一种错误捕获措施,我正在尝试实现一种方法来确保文件路径已正确输入到运行我的脚本的 .bat 文件中,文件
要获取类名的字符串表示,我们可以使用 obj.__class__.__name__是否可以重载这些方法以便我可以返回我的字符串而不是实际的类名? 最佳答案 让我们试试吧! (是的,这有效): >>>
为什么不能声明性地覆盖类名,例如使用不是有效标识符的类名? >>> class Potato: ... __name__ = 'not Potato' ... >>> Potato._
所以我有几个 Django 设置文件,一个用于测试,其他用于不同的客户。 这些设置文件都不会改变 sys.path。 所有这些都包含一个单一的基本设置文件,其中包含 INSTALLED_APPS。 大
为什么不能声明性地覆盖类名,例如使用不是有效标识符的类名? >>> class Potato: ... __name__ = 'not Potato' ... >>> Potato._
当我运行时: exec("print(__name__)") 它打印__main__。 但是当我运行时: exec("print __name__", {}) 它打印builtins。 如何让第二个例
给定以下设置: def mapper(f): def wrapper(items): for x in items: yield f(x) wr
我试图了解分配给 Python 类对象的变量与该类对象的 __name__ 属性之间的关系。例如: In [1]: class Foo(object): ...: pass ...
目录 1.程序入口 2.__name__是什么? 场景1:直接运行脚本 场景2:从其他脚本导入 3.__name__
我是一名优秀的程序员,十分优秀!