[英]How to run Python script in venv?
我正在嘗試使用 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()
Bot 以命令開頭:
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'
最后,我在 shebang 行的 venv 中插入了解釋器的完整路徑:
#!/root/jira_bot/env/bin/python3
使用./sreda_bot.py
而不是python3 sreda_bot.py
。 它工作正常。
考慮到Python Shebang語法如下
#!interpreter [optional-arg]
您只需要找到您的Virtual ENV的解釋器位置。
#!<venv path>/bin/python[3.x]
因此,假設您的虛擬 ENV位於~/jira_bot
基地,如下所示。
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
所以你的shebang應該是#!/root/jira_bot/bin/python3
Python 中的虛擬環境的目的是在項目及其模塊之間創建物理分離。 在這種情況下,您在虛擬環境中安裝的遙控機器人模塊不在虛擬環境之外的 scope(可供使用)中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.