如何在 Virtualenv 中执行 Python 解释器启动代码?
How to execute Python Code on Interpreter Startup in Virtualenv?
我想在 python 解释器启动后执行代码。
我们使用 virtualenv,到目前为止我们有一个名为 sitecustomize.py 的文件,它在解释器启动期间执行。
sitecustomize.py 是我们项目的一部分。我们使用这个术语的 Django 定义:它是一个小的 python 模块,它只包含配置,几乎没有代码:Django's Definition of "Project"
不幸的是,一些 linux 发行版 (Ubuntu) 提供了全局站点自定义,而我们的 per virtualenv 站点自定义没有被加载。
问题
如何 运行 Python 在 virtualenv 中启动解释器时编写代码?
即使交互式解释器启动,也应该执行此代码。
目标与策略
我不在乎这个钩子叫 "sitecustomize" 还是不同的 :-)
使用usercustomize
.
在某些 linux 发行版中存在全局站点自定义,而在某些发行版中则不存在。
这可能会导致混乱的行为。
没有 linux 发行版提供用户自定义。
见site
... After this, an attempt is made to import a module named usercustomize, which can perform arbitrary user-specific customizations, if ENABLE_USER_SITE is true.
您可以使用此答案中解释的 pth 文件:
在解释器执行其输入的第一行之前加载 pth 文件。
@guettli 回答的补充:您甚至可以将 .pth
文件作为软件包分发的一部分,因此在安装时它会在 [=39= 上生成一些代码 运行 ] 启动,卸载后,这段代码将不再运行.
示例包:
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 .
与这些文件在同一目录中。
这应该会在你的 python 根目录中安装 startup.pth
,你应该会在每次你的解释器 运行 时看到 Success!!
打印出来。
要撤消该操作,运行 pip uninstall pth_startup_example
.
您可以将它添加到现有包中,或者使这样的包成为另一个包的依赖项。
我想在 python 解释器启动后执行代码。
我们使用 virtualenv,到目前为止我们有一个名为 sitecustomize.py 的文件,它在解释器启动期间执行。
sitecustomize.py 是我们项目的一部分。我们使用这个术语的 Django 定义:它是一个小的 python 模块,它只包含配置,几乎没有代码:Django's Definition of "Project"
不幸的是,一些 linux 发行版 (Ubuntu) 提供了全局站点自定义,而我们的 per virtualenv 站点自定义没有被加载。
问题
如何 运行 Python 在 virtualenv 中启动解释器时编写代码?
即使交互式解释器启动,也应该执行此代码。
目标与策略
我不在乎这个钩子叫 "sitecustomize" 还是不同的 :-)
使用usercustomize
.
在某些 linux 发行版中存在全局站点自定义,而在某些发行版中则不存在。
这可能会导致混乱的行为。
没有 linux 发行版提供用户自定义。
见site
... After this, an attempt is made to import a module named usercustomize, which can perform arbitrary user-specific customizations, if ENABLE_USER_SITE is true.
您可以使用此答案中解释的 pth 文件:
在解释器执行其输入的第一行之前加载 pth 文件。
@guettli 回答的补充:您甚至可以将 .pth
文件作为软件包分发的一部分,因此在安装时它会在 [=39= 上生成一些代码 运行 ] 启动,卸载后,这段代码将不再运行.
示例包:
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 .
与这些文件在同一目录中。
这应该会在你的 python 根目录中安装 startup.pth
,你应该会在每次你的解释器 运行 时看到 Success!!
打印出来。
要撤消该操作,运行 pip uninstall pth_startup_example
.
您可以将它添加到现有包中,或者使这样的包成为另一个包的依赖项。