如何在 venv 中运行 Python 脚本?

Vad*_*dim 2 python ubuntu

我正在尝试使用 venv 在 Linux 中启动电报机器人。但只有手动激活 venv 时,机器人才会启动。

Python代码:

#!env/bin/python3
# -*- coding: utf-8 -*-
import config
import telebot

bot = telebot.TeleBot(config.token)

@bot.message_handler(content_types=["text"])
def repeat_all_messages(message): 
    bot.send_message(message.chat.id, message.text)

if __name__ == '__main__':
    bot.infinity_polling()
Run Code Online (Sandbox Code Playgroud)

机器人以命令启动:

root@ubuntu-s-1vcpu-1gb-ams3-01:~/jira_bot# source env/bin/activate
(env) root@ubuntu-s-1vcpu-1gb-ams3-01:~/jira_bot# python3 sreda_bot.py
Run Code Online (Sandbox Code Playgroud)

但如果我尝试在不激活 venv 的情况下启动它:

root@ubuntu-s-1vcpu-1gb-ams3-01:~/jira_bot# python3 sreda_bot.py
Traceback (most recent call last):
  File "sreda_bot.py", line 4, in <module>
    import telebot
ModuleNotFoundError: No module named 'telebot'
Run Code Online (Sandbox Code Playgroud)

Vad*_*dim 6

最后,我在 shebang 行的 venv 中插入了解释器的完整路径:

#!/root/jira_bot/env/bin/python3
Run Code Online (Sandbox Code Playgroud)

用于./sreda_bot.py代替python3 sreda_bot.py. 而且效果很好。