问题标签 [python-import]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python - 导入错误
我做了我不应该做的事情,写了 4 个模块(6 小时左右),一路上没有运行任何测试。
我在被调用的内部有一个方法,在/mydir/__init__.py
被调用的内部有一个get_hash()
类。/mydir/utils.py
SpamClass
/mydir/utils.py
get_hash()
从进口/mydir/__init__
。
/mydir/__init__.py
SpamClass
从进口/mydir/utils.py
。
类和方法本身都可以正常工作,但由于某种原因,如果我尝试导入/mydir/
,我会收到一个导入错误,说"Cannot import name get_hash"
from /mydir/__init__.py
。
唯一的堆栈跟踪是表示 import 的__init__.py
行SpamClass
。SpamClass
下一行是尝试导入时发生错误的位置get_hash
。为什么是这样?
python - 为什么 Python 的 __import__ 需要 fromlist?
在 Python 中,如果你想以编程方式导入一个模块,你可以这样做:
如果要导入子模块,您会认为这很简单:
当然,这是行不通的;你module_name
又来了。你所要做的:
为什么?的实际值fromlist
似乎根本不重要,只要它不为空即可。要求一个论点,然后忽略它的价值有什么意义?
Python 中的大多数东西似乎都是有充分理由的,但对于我的一生,我无法为这种行为的存在提出任何合理的解释。
python - 我应该使用“import os.path”还是“import os”?
根据官方文档,os.path
是一个模块。因此,导入它的首选方式是什么?
或者...
请不要回答“os
为我导入作品”。我知道,它现在也适用于我(从 Python 2.6 开始)。我想知道的是关于这个问题的任何官方建议。所以,如果你回答了这个问题,请张贴你的参考资料。
python - 防止 Python 缓存导入的模块
在使用 IPython 在 Python 中开发一个大型项目(拆分为多个文件和文件夹)时,我遇到了缓存导入模块的麻烦。
问题是指令import module
只读取该模块一次,即使该模块已更改!所以每次我更改包中的某些内容时,我都必须退出并重新启动 IPython。痛苦。
有没有办法正确强制重新加载某些模块?或者,更好的是,以某种方式阻止 Python 缓存它们?
我尝试了几种方法,但都没有奏效。特别是我遇到了非常非常奇怪的错误,例如某些模块或变量神秘地等于None
...
我发现的唯一明智的资源是Reloading Python modules,来自 pyunit,但我没有检查它。我想要那样的东西。
一个不错的选择是让 IPython 重新启动,或者以某种方式重新启动 Python 解释器。
那么,如果你用 Python 开发,你找到了什么样的解决方案来解决这个问题呢?
编辑
说清楚:显然,我知道一些旧变量取决于模块的先前状态可能会保留。那个我能接受。为什么在 Python 中强制重新加载模块而不发生各种奇怪的错误如此困难?
更具体地说,如果我将整个模块放在一个文件中module.py
,则以下内容可以正常工作:
这段代码工作得很好,我可以在几个月内不退出 IPython 的情况下进行开发。
但是,每当我的模块由几个子模块组成时,地狱就会崩溃:
为什么无论我将模块放在一个大文件中还是在多个子模块中,Python 会有如此不同?为什么这种方法不起作用?
python - 相对进口的噩梦,pep 366如何工作?
我有一个这样的“规范文件结构”(我给出了合理的名称以方便阅读):
在这种结构中,例如每个包中包含的模块可能希望helpers
通过相对导入来访问实用程序,例如:
该程序以这种方式使用文件“作为脚本”运行__main__.py
:
试图遵循PEP 366我在__main__.py
这些行中添加了:
但是运行时:
怎么了?处理和有效使用相对进口的正确方法是什么?
我也尝试将当前目录添加到 PYTHONPATH,没有任何变化。
python - Python 鼻子导入错误
我似乎无法让鼻子测试框架识别文件结构中我的测试脚本下的模块。我已经设置了演示问题的最简单示例。我会在下面解释。
这是包文件结构:
foo.py 包含:
测试/test_foo.py 包含:
两个init .py 文件都是空的
如果我nosetests -vv
在主目录( foo.py 所在的位置)中运行,我会得到:
当我从 tests/ 目录中运行时,我得到了同样的错误。根据我发现的文档和示例,nose 应该将所有父包添加到路径以及调用它的目录中,但在我的情况下似乎没有发生这种情况。
我正在使用 Python 2.6.2 运行 Ubuntu 8.04。如果这很重要,我已经手动构建和安装了鼻子(不是使用 setup_tools)。
python - 在 Python 中,当您在函数内部导入时会发生什么?
在速度和内存效率方面,在函数内部导入 Python 模块和/或函数的优缺点是什么?
每次运行函数时是否重新导入,或者无论函数是否运行,都可能只在开始时重新导入一次?
python - Python导入错误:没有命名的模块
我对 Python 很陌生。我有一个现有的示例项目,其中包含YYY
path中的脚本XXX/YYY
,以及一个A.py
一一调用这些脚本的脚本。
我只想在脚本中添加一个脚本ZZZ.py
,YYY
以便在它们之后调用。我将此脚本添加到同一路径 ( XXX/ZZZ.py
) 中并尝试将其导入A.py
并调用它。
但我得到了这个错误:
我想知道:有什么区别?为什么 Python 可以导入XXX/YYY
py 文件但返回此错误ZZZ.py
?
python - Python - 如何使用复杂的目录结构使用 PYTHONPATH?
考虑以下文件\目录结构:
我应该如何在foo.py中使用sys.path.append以便可以使用bar1.py和bar2.py?导入
会是什么样子?
python - celery-django 找不到设置
我有一个使用Celery运行异步任务的 Django 项目。我正在 Windows XP 机器上进行开发。
启动我的 Django 服务器 ( python manage.py runserver 80
) 工作正常,但尝试启动 Celery Daemon ( python manage.py celeryd start
) 失败并出现以下错误:
ImportError:无法导入设置“src.settings”(它在 sys.path 上吗?是否有语法错误?):没有名为 src.settings 的模块
sys.path 包含'C:\development\SpaceCorps\src',所以我不确定为什么它找不到这个模块。
这是启动守护程序的完整输出: