我正在尝试在Linux中使用venv启动电报机器人。但只有手动激活venv时,bot才会启动
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()
Bot从comands开始:
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
但如果我尝试在不激活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'
考虑到Python的语法如下所示
您只需要找到您的虚拟环境的解释器位置
因此,假设您的虚拟环境位于
~/jira_bot
基,如下所示所以你的shebang应该是
#!/root/jira_bot/bin/python3
最后,我在venv in shebang行中插入了解释器的完整路径:
使用
./sreda_bot.py
代替python3 sreda_bot.py
。而且效果很好Python中虚拟环境的目的是在项目及其模块之间创建物理分离。在这种情况下,您在虚拟环境中安装的telebot模块不在虚拟环境之外的范围内(可供使用)
相关问题 更多 >
编程相关推荐