所以,再一次,我制作了一个不错的 Python 程序,它让我的生活变得更加轻松并节省了大量时间。当然,这涉及到一个virtualenv,用virtualenvwrapper 的mkvirtualenv 函数制作。该项目有一个 requirements.txt 文件,其中包含一些必需的库(也有请求:D),如果没有这些库,程序将无法运行。

我正在尝试添加一个 bin/run-app 可执行 shell 脚本,该脚本将在我的路径中(实际上是符号链接(symbolic link))。现在,在这个脚本中,我需要先切换到 virtualenv,然后才能运行这个程序。所以我把这个放进去

#!/bin/bash
# cd into the project directory
workon "$(cat .venv)"
python main.py

文件 .venv 包含 virtualenv 名称。但是当我运行这个脚本时,我得到了 workon: command not found 错误。

当然,我的 bashrc 中有 virtualenvwrapper.sh 源,但它似乎在这个 shell 脚本中不可用。

那么,我如何在这里访问那些 virtualenvwrapper 函数?还是我这样做是错误的?你如何启动你的python工具,每个工具都有自己的virtualenv!?

最佳答案

只需在脚本中获取 virtualenvwrapper.sh 脚本即可导入 virtualenvwrapper 的函数。然后,您应该可以在脚本中使用 workon 函数。

也许更好,您可以创建一个 shell 脚本(例如,您可以将其命名为 venv-run.sh)来将任何 Python 脚本运行到给定的 virtualenv 中,并将其放置在 /usr/bin/usr/local/bin 或 .4823141 中的任何目录中

这样的脚本可能如下所示:

#!/bin/sh
# if virtualenvwrapper.sh is in your PATH (i.e. installed with pip)
source `which virtualenvwrapper.sh`
#source /path/to/virtualenvwrapper.sh # if it's not in your PATH
workon $1
python $2
deactivate

并且可以像 PATH 一样简单地使用

关于python - 在 shell 脚本中无法使用 virtualenvwrapper 函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7538628/

10-14 17:37
查看更多