gpt4 book ai didi

python - 从 import 导入到 python 解释器主命名空间

转载 作者:太空宇宙 更新时间:2023-11-03 18:49:01 25 4
gpt4 key购买 nike

如何使用一个命令/导入从解释器运行一堆导入和路径附加?如果我导入另一个为我运行命令的模块,则导入在主命名空间中不可用。类似于运行 bash 脚本来修改/添加命令和变量到当前 session 。

例如。

import os, ...
sys.path.append(...)

最佳答案

如果我理解正确的话,您只是在寻找 from ... import ... 语句。例如:

lotsostuff.py:

import json
def foo(): pass

现在:

$ python3.3
>>> from lotsostuff import *
>>> json
<module 'json' from '/usr/local/lib/python3.3/json/__init__.py'>
>>> foo
<function lotsostuff.foo>
<小时/>

但是,您可能需要考虑不同的替代方案。如果您只是想控制解释器 session 的启动,您可以这样做:

$ PYTHONSTARTUP=lotsostuff.py
$ python3.3
>>> json
<module 'json' from '/usr/local/lib/python3.3/json/__init__.py'>
>>> foo
<function __main__.foo>

请注意最后一行的差异。您现在在 __main__ 命名空间中运行 lotsostuff,而不是在单独的命名空间中运行并获取其所有成员。

<小时/>

同样:

$ python3.3 -i lotsostuff.py
>>> json
<module 'json' from '/usr/local/lib/python3.3/json/__init__.py'>

如果您想在 session 中每次都执行此操作,则通常会使用 PYTHONSTARTUP;如果您只想执行一次,则通常会使用 -i

<小时/>

如果您想在 session 中间而不是启动时执行相同的操作...好吧,您不能直接执行此操作,但您可以使用 exec 非常接近。 (Python 3.x)(或 Python 2.x 中的 execfile)。

<小时/>

如果您确实想要完全执行您所描述的操作(导入模块,作为正常导入,除了合并到您的命名空间而不是合并到其自己的命名空间中),您需要自定义导入过程。这对 importlib 来说并不难;如果您不是使用 Python 3.2 或更高版本,那么您将需要做更多工作 imp .

<小时/>

这几乎是 之间的区别。 ./foo 而不是我认为您正在寻找的 bash 脚本中的 ./foo

如果您使用ipython ,还有更酷的选择。 (如果您没有使用 ipython,您可能需要检查一下。)

关于python - 从 import 导入到 python 解释器主命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18797377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com