标签: python-module

在 Python 中重新加载依赖模块

假设我有一个main.py导入othermodule.py. 是否可以写一个reload(othermodule)inmain.py以便当我对 进行更改时othermodule.py,我仍然可以只reload(main),然后重新加载其他模块?

python python-module reload

5
推荐指数
1
解决办法
3625
查看次数

为什么导入模块会执行python中的所有语句?

这是我的模块:

测试1.py

regions=["a","b","c"]
print "from test1 module"
Run Code Online (Sandbox Code Playgroud)

测试2.py

from test1 import regions
print "from test2 module", regions
Run Code Online (Sandbox Code Playgroud)

运行 test2.py

python test2.py 
from test1 module
from test2 module ['a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)

我看到print语句 fromtest1.py被调用,虽然我只导入regionslist from test1.py。我不是说import test1.py一切都要被执行。

1)为什么它会执行test1.py文件中的所有内容(当然不是__name__==__main__if 包含的)。

2)如何import在不执行所有其他语句的情况下只执行regions listfrom test1 module?

我不知道这就是导入的工作原理,并且由于这个原因,我已经研究了 3 天的错误。

python python-module python-import

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

使用本地模块而不是系统安装模块(Python 2.xx)

我有一个与Python一起使用的集群系统和在该系统上安装的一些模块 - 但是我想使用该模块的最新版本 - 它有几种方法在旧版本中不存在,所以我构建它并且它是本地的deps在我可以访问的区域:

# From my home directory: /gpfs/env/yrq12edu

# Get the source I need for the up to date version of the module I want to install locally.
svn co svn://svn.code.sf.net/p/simupop/code/trunk simuPOP

# Install PCRE stuff...
cd pcre-8.34
./configure --prefix=/gpfs/env/yrq12edu/pcre_install
make
make install
export PATH=/gpfs/env/yrq12edu/pcre_install/bin:$PATH
export LD_LIBRARY_PATH=/gpfs/env/yrq12edu/pcre_install/lib:$LD_LIBRARY_PATH
cd ..

# Install Swig Stuff...
cd swig-3.0.0
./configure --prefix=/gpfs/env/yrq12edu/swig_install
make
make install
export PATH=/gpfs/env/yrq12edu/swig_install/bin:$PATH
cd ..

export PYTHONPATH=/gpfs/env/yrq12edu/PythonModules/lib/python2.7/site-packages

# Build the up to date simuPOP module I need locally... …
Run Code Online (Sandbox Code Playgroud)

python python-module local python-2.7

5
推荐指数
1
解决办法
947
查看次数

在 IntelliJ 中,显示“No module named xxx”,但“xxx”实际上安装在我的系统中

我的 IntelliJ 版本是15.0.3,并且安装了 python 插件。

当我在 IntelliJ 中打开一个 python 文件时,如下所示 在此处输入图片说明

这里的情况如下:

  1. 当我在终端中导入这些标记的模块时,一切正常。
  2. 在 IntelliJ 中运行这个 python 文件,也很好

这只是让我烦恼的红色潜在警告。

我试过这个,这个和这个,但没有一个对我有用。

谁能告诉我如何摆脱它?非常感谢。

python ide python-module intellij-idea python-import

5
推荐指数
1
解决办法
3742
查看次数

修改Python中导入脚本的命名空间

我希望我的模块中的一个函数能够访问和更改导入它的脚本的本地命名空间.这将启用这样的功能:

>>> import foo
>>> foo.set_a_to_three()
>>> a
3
>>>
Run Code Online (Sandbox Code Playgroud)

这在Python中可行吗?

python namespaces python-module python-import

5
推荐指数
1
解决办法
1184
查看次数

python importlib,如何使动态加载文件的缓存无效

鉴于此代码,我如何告诉 python 不使用缓存源或重新加载?

import importlib.util

spec = importlib.util.spec_from_file_location('test', '~/myfile.py')
test = importlib.util.module_from_spec(spec)
spec.loader.exec_module(test)

test.do_stuff()
Run Code Online (Sandbox Code Playgroud)

当 myfile.py 的内容发生变化时,它没有被拾取,我假设是因为它被缓存了。调用importlib.invalidate_caches()没有帮助并importlib.reload导致错误,指出测试不在 sys.modules 中

python python-module python-import python-3.5

5
推荐指数
1
解决办法
1144
查看次数

如果安装新版本的Python,是否应该重新安装每个模块?

我刚安装了Python 3.6并运行终端,尝试使用import我已经在3.5中安装的任何模块(rsa,matplotlib,附魔等),然后返回:

ModuleNotFoundError: No module named 'module_name'  
Run Code Online (Sandbox Code Playgroud)

但是,当我运行Python 3.5时,它们仍然可以工作。我该怎么办?

python macos python-module

5
推荐指数
1
解决办法
52
查看次数

为什么python模块在shell中工作而不在脚本中工作?

我正在尝试制作两个程序。我想让一个打印我居住城市的当前天气,我想让另一个从在线帐户中获取数据并将其返回。对于这些脚本,我导入了 yweather 模块和 requests 模块。当我在 shell 中导入它们时,没有问题,但是当我运行脚本时,它显示“导入错误:没有名为 yweather 的模块”。我究竟做错了什么?

贝壳:

>>> import requests
>>> 
Run Code Online (Sandbox Code Playgroud)

脚本:

Traceback (most recent call last):
  File "/Users/tim/Desktop/login.py", line 1, in <module>
    import requests
ImportError: No module named requests 
Run Code Online (Sandbox Code Playgroud)

这也发生在 yweather 模块

谢谢

python python-module python-2.7

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

如何获取python模块导入的模块列表

如果有的话,我想在 Python 中访问某种导入依赖项跟踪。

我决定在我的模块中添加一个__dependencies__描述模块导入的所有模块版本的字典。

我想要一种自动获取模块导入的模块列表的方法。最好在模块的最后一行。

ModuleFinder(如如何在 Python 模块中列出导入所建议的那样?)将不起作用,因为应对已加载的模块执行检查。

另一个问题ModuleFinder是它检查 Python脚本(带if __name__ == '__main__'分支),而不是模块。

如果我们考虑一个玩具脚本 script.py:

if __name__ == '__main__':
    import foo
Run Code Online (Sandbox Code Playgroud)

那么结果是:

>>> mf = ModuleFinder
>>> mf.run_script('script.py')
>>> 'foo' in mf.modules
True
Run Code Online (Sandbox Code Playgroud)

如果脚本作为模块导入,则应该为 False。

我不想列出所有导入的模块 - 仅由我的模块导入的模块 - 所以sys.modules(建议在 python 中列出所有导入的模块的最佳方法是什么?)会返回太多。

我可以比较sys.modules模块代码开头和结尾的快照。但是那样我会错过我的模块使用的所有模块,但之前由任何其他模块导入。

列出模块从中导入对象的模块也很重要。

如果我们考虑一个玩具模块 example.py:

from foo import bar
import baz
Run Code Online (Sandbox Code Playgroud)

那么结果应该是这样的:

>>> import example
>>> moduleImports(example)
{'foo': <module 'foo' …
Run Code Online (Sandbox Code Playgroud)

python python-module python-import python-2.7 python-3.x

5
推荐指数
1
解决办法
4797
查看次数

VSCode python调试:使用模块属性时,“没有名为xx的模块”

我的Python项目文件夹结构如下:

.python_practice
|--lib
    |--lib.py
    |--__init__.py
|--practice1
    |--my_module.py
    |--__init__.py
|--__init__.py
Run Code Online (Sandbox Code Playgroud)

我的启动配置是

{
    "name": "Python: Module",
    "type": "python",
    "request": "launch",
    "module": "practice1.my_module",
    "console": "integratedTerminal"
 },
Run Code Online (Sandbox Code Playgroud)

在my_module.py中

from lib.lib import util_func
Run Code Online (Sandbox Code Playgroud)

当我尝试使用VScode进行调试时,出现错误: "No module named practice1.my_module"

但是当我使用以下命令运行它时,它可以正常工作

python -m practice1.my_module
Run Code Online (Sandbox Code Playgroud)

如何调试代码,以便相对导入工作?

任何帮助将不胜感激,谢谢。

python debugging python-module visual-studio-code

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