usercustomize.py 自动运行但不存储变量和函数

问题描述 投票:0回答:2

我已按照本主题中的说明进行操作: 有没有办法让python启动时始终执行脚本? (类似 R 中的 site.profile)

python3 -m site
的部分输出:

USER_SITE: '/home/<myuser>/.local/lib/python3.10/site-packages' (exists)
ENABLE_USER_SITE: True

我有这个usercustomize.py:

variabile = 'Ciao Mondo.'
print(variabile)

Gnome 终端:

<myuser>@<myuser>-<mypc>:~$ python3
Ciao Mondo.
Python 3.10.6 (main, May 29 2023, 11:10:38) [GCC 11.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print(variabile)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'variabile' is not defined
>>> 

如您所见,

usercustomize.py
会自动运行并打印
variabile
的值,但不会存储它,无论是当我运行请求它的脚本时,还是从控制台(如上面的示例中)。

解决方案不能在

PYTHONSTARTUP
中,因为我不仅需要在交互模式下工作时运行这个文件,还需要从脚本中运行这个文件。

我该如何解决这个问题?

python bash command-line ubuntu-22.04 site-packages
2个回答
0
投票

肮脏的黑客:

# USER_SITE/usercustomize.py
import sys
sys.my_variable = 'Ciao Mondo.'

现在您可以访问该变量导入了

sys

$ python3
>>> import sys
>>> print(sys.my_variable)
Ciao Mondo.

或更简洁:

# USER_SITE/usercustomize.py
import builtins
builtins.my_variable = 'Ciao Mondo.'

现在您可以访问该变量而无需导入任何内容

$ python3
>>> print(my_variable)
Ciao Mondo.

0
投票

要创建可供 Python 其余部分使用的变量,您可以将其添加到

builtins
模块中。

import builtins
builtins.variabile = variabile
© www.soinside.com 2019 - 2024. All rights reserved.