我想在python解释器启动后执行代码。
我们使用virtualenv,到目前为止我们有一个名为sitecustomize.py的文件,它在解释器启动时执行。
sitecustomize.py是我们项目的一部分。我们使用这个术语的Django定义:它是一个小的python模块,只保存配置,几乎没有代码:Django's Definition of "Project"
不幸的是,一些Linux发行版(Ubuntu)提供了一个全局的sitecustomize,我们的每个virtualenv sitecustomize都没有加载。
如何在virtualenv中的解释器启动时运行Python代码?
即使交互式解释器已启动,也应执行此代码。
我不在乎是否要调用此挂钩" sitecustomize"或者不同: - )
答案 0 :(得分:5)
@guettli的回答的补充:您甚至可以将.pth
文件作为软件包分发的一部分,因此,在安装时,它将使某些代码在python启动时运行,而在卸载时,这代码将不再运行。
示例包:
startup.pth
setup.py
startup.pth
的内容:
import sys; print('Success!!')
setup.py
的内容:
from setuptools import setup
setup(
name='pth_startup_example',
data_files=[
('.', ['startup.pth'])
]
)
创建这些文件后,在与文件相同的目录中运行pip install .
。
那应该将startup.pth
安装在您的python根目录中,并且您每次运行解释程序时都应该看到Success!!
打印出来。
要撤消该操作,请运行pip uninstall pth_startup_example
。
您可以将其添加到现有软件包中,或将这样的软件包作为其他软件包的依赖项。
答案 1 :(得分:2)
答案 2 :(得分:0)
使用usercustomize
。
在一些Linux发行版上,存在一个全局sitecustomize,有些则没有。
这可能会导致行为混乱。
没有Linux发行版提供用户自定义。
请参阅site
...在此之后,尝试导入名为usercustomize的模块,如果ENABLE_USER_SITE为true,则可以执行任意特定于用户的自定义。