9

当我创建一个 virtualenv 时,它会安装 setuptools 和 pip。是否可以将新包添加到此列表中?

示例用例:

  • 按照这个在 virtualenv 中使用 ipython 的解决方案(来自这个问题)需要在每个 virtualenv 中安装 ipython(除非我允许 system-site-packages)。
  • 或者,如果我只进行烧瓶/pygame/framework 开发,我希望在每个 virtualenv 中都使用它。
4

2 回答 2

3

你可以编写一个 python 脚本,比如personalize_venv.py扩展EnvBuilder类并覆盖它的post_setup()方法来安装你需要的任何默认包。

您可以从https://docs.python.org/3/library/venv.html#an-example-of-extending-envbuilder获取基本示例。

这不需要钩子。dirs使用指向您的 venv 目录的命令行参数直接运行脚本。钩子是类的post_setup()方法本身EnvBuilder

于 2020-07-20T06:08:00.903 回答
3

我采取了与选择正确答案不同的方法。

我选择了我的目录,喜欢~/.virtualenv/deps并在其中安装了软件包

pip install -U --target ~/.virtualenv/deps ...

接下来~/.virtualenv/postmkvirtualenv我输入以下内容:

# find directory
SITEDIR=$(virtualenvwrapper_get_site_packages_dir)
PYVER=$(virtualenvwrapper_get_python_version)

# create new .pth file with our path depending of python version
if [[ $PYVER == 3* ]];
then
    echo "$HOME/.virtualenvs/deps3/" > "$SITEDIR/extra.pth";
else
    echo "$HOME/.virtualenvs/deps/" > "$SITEDIR/extra.pth";
fi

基本上说同样的话的帖子

于 2017-03-02T19:29:36.573 回答