我已按照本主题中的说明进行操作: 有没有办法让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
中,因为我不仅需要在交互模式下工作时运行这个文件,还需要从脚本中运行这个文件。
我该如何解决这个问题?
肮脏的黑客:
# 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.
要创建可供 Python 其余部分使用的变量,您可以将其添加到
builtins
模块中。
import builtins
builtins.variabile = variabile