在pipenv项目中为python文件创建命令行别名

我一直在使用pipenv创建一个python项目,我希望能够从我的(linux)系统上的任何位置在终端中运行它.
具体来说,假设我有以下目录结构:

/home
  /project
    Pipfile
    main.py
  /other_dir

我希望能够创建一个别名,允许我像这样调用main.py:

 /home/other_dir$alias_to_my_proyect --some args

并在虚拟环境中运行它,具有与之相同的行为

/home/project$pipenv run python main.py

但在另一个目录中.

如果它不是一个pipenv项目,我只是使用一个shebang作为文件的开头,然后在我的.bashrc中添加一个别名,但我想使用pipenv的虚拟环境,但我无法找到一种方法用pipenv做这个.

解决方法:

如果要为脚本使用特定的python环境,则需要将其指向该环境的解释器.在Mac上,默认情况下,pipenv会将所有virtualenv安装到/Users/\u0026lt;user_name\u0026gt;/.local/share/virtualenvs/但是可以将其设置为不同的位置,如described in the manual

Pipenv automatically honors the WORKON_HOME environment variable, if you have it set — so you can tell pipenv to store your virtual environments wherever you want, e.g.:

export WORKON_HOME=~/.venvs

In addition, you can also have Pipenv stick the virtualenv in project/.venv by setting the PIPENV_VENV_IN_PROJECT environment variable.

你可以在项目文件夹中的pipenv –venv中找到virtualenv的确切位置.它返回类似/Users/reedef/.local/share/virtualenvs/project-BpR9WgCa的内容.解释器位于该位置的./bin/python中.

如果我们假设您没有设置任何环境变量并且您使用的Mac比这意味着您可以编写脚本:

#!/usr/bin/env sh
/Users/reedef/.local/share/virtualenvs/project-BpR9WgCa/bin/python /home/project/main.py

并将它放在$PATH中的某个位置,例如/usr/local/bin / my_fancy_main让它在特定环境中运行.

注意:正如@Jon在评论中所提到的,路径末尾的-BpR9WgCa是稳定的,因为它是is made from the project path

06001

只要项目路径没有改变,它应该是相同的.

上一篇:《Linux基础知识及命令》系列分享专栏


下一篇:索引别名,滚动索引