相关疑难解决方法(0)

如何卸载(重新加载)Python模块?

我有一个长期运行的Python服务器,并希望能够在不重新启动服务器的情况下升级服务.这样做的最佳方法是什么?

if foo.py has changed:
    unimport foo  <-- How do I do this?
    import foo
    myfoo = foo.Foo()
Run Code Online (Sandbox Code Playgroud)

python module reload python-import

759
推荐指数
15
解决办法
59万
查看次数

Python:使用'from X import Y'重新加载组件Y?

在Python中,一旦我在解释器会话中导入模块X import X,并且模块在外部更改,我可以重新加载模块reload(X).然后,在我的翻译会话中可以使用这些更改.

我想知道当我从模块X导入组件Y时是否也可以这样做from X import Y.

该语句reload Y不起作用,因为Y本身不是模块,而只是模块内部的一个组件(在本例中是一个类).

是否可以在不离开解释器会话(或导入整个模块)的情况下重新加载模块的各个组件?

编辑:

为了澄清,问题是从模块X导入类或函数Y并重新加载更改,而不是从包X中重新模块Y.

python python-import

80
推荐指数
5
解决办法
3万
查看次数

如何使用Keras切换后端(从TensorFlow切换到Theano)

我试图用Keras切换Backend(从TensorFlow切换到Theano)但是没有管理.我按照这里描述的临时措施,但它不起作用.我在keras的目录中创建了一个keras.json(因为它不存在)但是当我从Python导入它时它没有改变任何东西.

backend theano keras

42
推荐指数
6
解决办法
6万
查看次数

Python3 - 无法在__import__对象上调用reload()?

好吧,出于多种原因,我s = __import__('parse')在Python2中使用的时间最长,现在我需要为某些项目转换到Python3(主要是由于SSL).

但就reload()我发现而言,Python3中并没有相应的内容.只有一个选择:

import parse
parse.reload() #works
Run Code Online (Sandbox Code Playgroud)

但我真的,真的需要这个工作:

parse = __import__('parse')
parse.reload()
Run Code Online (Sandbox Code Playgroud)

要么

reload(parse)
Run Code Online (Sandbox Code Playgroud)

关于如何让它在Python3中运行的任何想法?

python module reload python-3.x python-3.3

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

从控制台重新加载python模块的正确方法

我正在从python控制台调试,并希望每次进行更改时重新加载模块,所以我不必退出控制台并重新输入它.我正在做:

>>> from project.model.user import *
>>> reload(user)
Run Code Online (Sandbox Code Playgroud)

但我收到:

>>>NameError: name 'user' is not defined
Run Code Online (Sandbox Code Playgroud)

重新加载整个用户类的正确方法是什么?有没有更好的方法来做到这一点,也许在调试时自动更新?

谢谢.

python

30
推荐指数
4
解决办法
3万
查看次数

从IPython重新加载Python扩展模块

使用Cython,我正在开发一个扩展模块,它将构建为.so文件.然后我使用IPython测试它.在开发过程中,我经常需要进行更改和重建.我还需要退出IPython shell并重新输入所有命令.重新导入模块

import imp
imp.reload(Extension)
Run Code Online (Sandbox Code Playgroud)

不起作用,代码不更新.有没有办法让我在重建模块后避免重启IPython shell?

python ipython cython python-3.x

21
推荐指数
1
解决办法
3632
查看次数

用Python 3.4重新加载模块

我知道这可能听起来像一个非常愚蠢的问题,但无论如何.我在Python中创建了一个小脚本,我在shell中做了一些更改.通常,在OS X计算机上(它正在运行Python 2.7),我只需输入reload(the_module)并重新加载包含我所做更改的模块.但是,当我在这里重新加载模块时(在windows python v.3.4上),它只是给了我这个:

>>> reload(instfile)
Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    reload(instfile)
NameError: name 'reload' is not defined
Run Code Online (Sandbox Code Playgroud)

然后当我输入时imp.reload(my_module),它只是说该函数已被弃用.我似乎无法找到新功能(或它的等效物)将在任何地方,所以如果有人可以帮助我,这将是伟大的!:)

python python-module python-3.x python-3.4

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

Python - 对导入文件的更改不生效

我有一个名为 的文件test_file,它旨在测试另一个名为file. 'test_file' 还包含.txt同一目录中的一个文件。当我更新时file,保存,选择“更改为编辑器目录...”,然后运行test_file,Enthought 似乎无法识别file已更新。起初我原本以为我每次更新时,选择“更改为编辑目录”选项file,我也这样做,但test_file仍然打印“成功”,即使我刻意修改file,使test_file应打印假的。(是的,我确定它应该打印 false,因为我在 中添加了一堆乱码file,甚至不应该运行的代码,例如抛出return带有明显不正确缩进的语句)。所以,本质上,Enthought Canopy 没有意识到我已经更新了file.

但是,如果我保存并退出所有内容,重新打开Enthought,选择“更改为编辑器目录”,然后运行test_file,它会打印正确的结果。

这非常令人沮丧,因为在我意识到这一点之前,我花了几天时间调试正确的代码。这让我非常担心,因为我不知道我过去测试的内容是否真的正确,而且我不希望将来发生这种情况。

造成这种情况的可能原因是什么?(注:不知道这是Enthought问题还是Python问题)

python debugging enthought python-2.7

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

为什么在切换到python3时从python builtins中重新加载了重新加载?

我最近从python 2切换到python 3. Python 3文档读取:" Removed reload().使用imp.reload() "它并没有真正说明为什么.

这个问题描述了它现在如何在python 3中完成.有没有人知道为什么它已从内置函数中删除,现在需要impimportlib重新加载?在使用交互式提示构建程序时测试程序时,默认情况下重新加载程序非常方便.显然,我可以通过做类似的事情来解决这个问题

from imp import reload
Run Code Online (Sandbox Code Playgroud)

每次打开交互式提示测试代码时,它只是另一行代码.这种变化背后的原因是什么?

python reload built-in python-2.7 python-3.x

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

使用Python进行热重新加载/交换

我希望代码更改在开发过程中立即生效.如何在运行的Python(2.7)应用程序中检测更改的文件并重新加载它们?

编辑:

阅读'Ivo van der Wijk'链接的页面后,我认为最好在代码更改时重新启动Web应用程序 - 就像Django那样.所以实际的问题是:如何监控文件修改?

python hotdeploy reload hotswap

4
推荐指数
2
解决办法
1万
查看次数

如何重新加载所有导入的模块?

我有几个模块,在开发Sublime Text软件包时,我想重新加载而不必重新启动Sublime Text。

我正在运行Sublime Text内部版本3142,该版本python3.3连续运行其软件包/插件。但是,在开发插件时,我将添加到path的第三方模块导入为:

import os
import sys

def assert_path(module):
    """
        Import a module from a relative path
        /sf/ask/19546621/
    """
    if module not in sys.path:
        sys.path.insert( 0, module )

current_directory = os.path.dirname( os.path.realpath( __file__ ) )
assert_path( os.path.join( current_directory, 'six' ) ) # https://github.com/benjaminp/six

import six
Run Code Online (Sandbox Code Playgroud)

但是,当我编辑模块的源代码时,six我需要再次关闭并打开Sublime Text,否则Sublime Text无法获取对sixpython模块的更改。


到目前为止我尝试过的一些代码:

print( sys.modules )
import git_wrapper
imp.reload( find_forks )
imp.reload( git_wrapper )
imp.reload( sys )
Run Code Online (Sandbox Code Playgroud)
  1. 从控制台重新加载python模块的正确方法
  2. 重新加载模块,给出NameError:名称'reload'未定义

python module python-import python-3.x

2
推荐指数
2
解决办法
5236
查看次数