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

标签 python aliases pipenv

我一直在使用 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将所有 virtualenvs 安装到 /Users/<user_name>/.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 :

hash = hashlib.sha256(location.encode()).digest()[:6]

只要项目路径没变,应该是一样的。

关于python - 为 pipenv 项目中的 python 文件创建命令行别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48451402/

相关文章:

python - pipfile 可编辑包位置

python - Youtube_dl : ERROR : YouTube said: Unable to extract video data

python - Wagtail 中的轮播图像问题

python - 与主管一起设置 pipenv

php - Yii2 从前端在后端显示图像 - 设置别名

email -/etc/aliases 使用管道运行脚本返回错误 (mailer=prog, dsn=5.3.0, stat=unknown mailer error 2)

python - 如何从虚拟环境中复制的 pipfile 安装依赖项?

python - 如何使用docker和OpenCV打开摄像头并处理图像?

python,迭代 subprocess.Popen() stdout/stderr

bash - 创建 git 别名